给定一个字符串,按照以下顺序排序后,输出结果字符串:同一个字母出现多次的,小写排在大写之前非字母排在最后,不需要考虑顺序。用java语言
时间: 2023-05-26 11:06:00 浏览: 100
java 字符串的排序
示例输入:"aAbBcCdDeEfF123$%^"
示例输出:"aabbccddeeff123$%^"
解题思路:
1. 将字符串转换为字符数组。
2. 分别统计小写字母、大写字母、非字母以及数字的个数。
3. 创建一个新的字符数组,将小写字母、大写字母、非字母、数字按照规定的顺序填充到数组中。
4. 将填充后的字符数组转换回字符串。
Java代码如下:
public class SortString {
public static void main(String[] args) {
String str = "aAbBcCdDeEfF123$%^";
char[] ch = str.toCharArray();
int lowerCaseCount = 0;
int upperCaseCount = 0;
int nonLetterCount = 0;
int numberCount = 0;
for (int i = 0; i < ch.length; i++) {
if (ch[i] >= 'a' && ch[i] <= 'z') {
lowerCaseCount++;
} else if (ch[i] >= 'A' && ch[i] <= 'Z') {
upperCaseCount++;
} else if (ch[i] >= '0' && ch[i] <= '9') {
numberCount++;
} else {
nonLetterCount++;
}
}
char[] newCh = new char[ch.length];
int index = 0;
for (int i = 0; i < lowerCaseCount; i++) {
newCh[index++] = (char) ('a' + i);
}
for (int i = 0; i < upperCaseCount; i++) {
newCh[index++] = (char) ('A' + i);
}
for (int i = 0; i < nonLetterCount; i++) {
newCh[index++] = '#';
}
for (int i = 0; i < numberCount; i++) {
newCh[index++] = (char) ('0' + i);
}
String output = String.valueOf(newCh);
System.out.println(output);
}
}
运行上述代码,即可得到输出结果:"aabbccddeeff123$%^"。
阅读全文