题解 | #字符串排序#
字符串排序
https://www.nowcoder.com/practice/5190a1db6f4f4ddb92fd9c365c944584
import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String s = in.nextLine();
int length = s.length();
char[] arr = new char[length];
ArrayList<Character> chars = new ArrayList<>();
for (int i = 0; i < length; i++) {
char c = s.charAt(i);
arr[i] = c;
if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) {
chars.add(c);
}
}
sort(chars);
int count = 0;
for (int i = 0; i < arr.length; i++) {
char c = arr[i];
if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) {
Character character = chars.get(count);
arr[i] = character;
count++;
}
}
for (int i = 0; i < arr.length; i++) {
System.out.print(String.valueOf(arr[i]));
}
}
private static void sort(ArrayList<Character> chars) {
int length = chars.size();
for (int i = 0; i < length; i++) {
for (int j = 0; j < length - i - 1; j++) {
char c = String.valueOf(chars.get(j)).toLowerCase().charAt(0);
char c1 = String.valueOf(chars.get(j + 1)).toLowerCase().charAt(0);
if (c > c1) {
char tmp = chars.get(j);
chars.set(j, chars.get(j + 1));
chars.set(j + 1, tmp);
}
}
}
}
}
解题思路:
1, 将需要排序的字符拿出来,单独进行冒泡排序;
2, 再将排序后的字符, 跳过特殊字符逐个插入原来的字符数组中
