首页 > 编程语言 >笔试算法《字符串排序_1》

笔试算法《字符串排序_1》

时间:2023-03-14 15:32:56浏览次数:39  
标签:字符 temp ++ chars 笔试 算法 排序 输入


题目描述

  • 编写一个程序,将输入字符串中的字符按如下规则排序。

规则 1 :英文字母从 A 到 Z 排列,不区分大小写。

如,输入: Type 输出: epTy

规则 2 :同一个英文字母的大小写同时存在时,按照输入顺序排列。

如,输入: BabA 输出: aABb

规则 3 :非英文字母的其它字符保持原来的位置。

如,输入: By?e 输出: Be?y

注意有多组测试数据,即输入有多行,每一行单独处理(换行符隔开的表示不同行)

  • 输入描述:
    输入字符串
  • 输出描述:
    输出字符串
    示例1
    输入
    A Famous Saying: Much Ado About Nothing (2012/8).
    输出
    A aaAAbc dFgghh: iimM nNn oooos Sttuuuy (2012/8).

解题思路和代码

先将字符排序,然后填入带有特殊字符的字符数组

public class Huawei字符串排序_1 {

/**
* 利用Arrays.sort方法排序
*
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String str = null;
while ((str = reader.readLine()) != null) {
char[] chars = str.toCharArray();
char[] temp = new char[chars.length];
//从A和a开始找出来放入temp
//大写A的编码
int A = 65;
//先将英文字符排序,放入temp数组,不考虑特殊字符
int j = 0;
while (A <= 90) {
for (int i = 0; i < chars.length; i++) {
//同一个英文字母的大小写同时存在时,按照输入顺序排列
if (chars[i] == A || chars[i] == (A + 32)) {
temp[j] = chars[i];
j++;
}
}
A++;
}
j = 0;
//将排号序的字符数组,一个个填入原始字符数组,遇到特殊字符不进行处理。
for (int i = 0; i < temp.length; i++) {
if ((chars[i] >= 65 && chars[i] <= 90) || (chars[i] >= 97 && chars[i] <= 122)) {
chars[i] = temp[j];
j++;
}
}
System.out.println(String.valueOf(chars));
}
}

}


标签:字符,temp,++,chars,笔试,算法,排序,输入
From: https://blog.51cto.com/u_12905373/6120575

相关文章

  • Steam流中的sorted方法排序
    使用方法packagecom.sports.basketball.controller.dto;importjava.util.ArrayList;importjava.util.Comparator;importjava.util.List;importjava.util.stream.Col......
  • [思维提升|干货All in]6种算法解决LeetCode困难题:滑动窗口最大值
    为了更好的阅读体验,欢迎阅读原文:[思维提升|干货Allin]6种算法解决LeetCode困难题:滑动窗口最大值(eriktse.com)最近在leetcode遇到一道非常经典的题目:239.滑动窗口最......
  • 32位汇编语言实现冒泡排序
    INCLUDEIrvine32.inc.dataarrdd99,2,3,1,22,88,7,77,54;定义数组lendd($-arr)/4;定义数组的长度变量.codemainPROCmovedx,offsetarr......
  • Tarjan算法详解
    Tarjan算法介绍TarjanTarjan算法是用于在有向图中求强连通分量的算法这里给出强连通分量的定义:有向图中一个最大的图,使这个图中每个两点都能够互相到达。这个最大的图称......
  • 决策树算法
    fromsklearnimporttreefromsklearn.datasetsimportload_irisfromsklearn.model_selectionimporttrain_test_splitimportnumpyasnpif__name__=="__main__":......
  • k近邻算法
    如果一个样本在特征空间中的k个最“相似”(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别相似度:即两个点的距离来衡量距离越近越近相似度......
  • SM2算法功能简述(一) 数字签名生成流程
    SM2数字签名算法由一个签名者对数据产生数字签名,并由一个验证者验证签名的可靠性。每个签名者有一个公钥和一个私钥,其中私钥用于产生签名,验证者用签名者的公钥验证签名。在......
  • TCP常见的拥塞控制算法
    TCP常见的拥塞控制算法有四种,即慢启动(slow-start)、拥塞避免(congestion-avoidance)、快重传(fastretransmit)、快恢复(fastrecovery)。它们的目的是根据网络的拥塞程度动态调整......
  • 网络社群发现算法挖掘bilibili视频流量数据可视化|附代码数据
    原文链接:https://tecdat.cn/?p=19006最近我们被客户要求撰写关于bilibili视频流量数据的研究报告,包括一些图形和统计输出。最新研究表明,中国有超过7亿人在观看在线视频内......
  • 【LeetCode回溯算法#11】解数独,这次是真的用回溯法处理二维数组
    解数独力扣题目链接(opensnewwindow)编写一个程序,通过填充空格来解决数独问题。一个数独的解法需遵循如下规则:数字1-9在每一行只能出现一次。数字1-9在每一列只......