题解 | 字符串排序
字符串排序
https://www.nowcoder.com/practice/5190a1db6f4f4ddb92fd9c365c944584
import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; import java.util.Iterator; import java.util.List; import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 while (in.hasNext()) { // 注意 while 处理多个 case String str = in.nextLine(); int n = str.length(); List<Character> list = new ArrayList<Character>(); char []charS = new char[n]; for (int i = 0; i < n; i++) { if (str.charAt(i) >= 65 && str.charAt(i) <= 90 || str.charAt(i) >= 97 && str.charAt(i) <= 122) { list.add(str.charAt(i)); } else { charS[i] = str.charAt(i); } } list.sort((a, b)->Character.toLowerCase(a) - Character.toLowerCase(b)); int i = 0; Iterator it = list.iterator(); while (i < n) { if (charS[i] == 0 && it.hasNext()) { Character c = (Character)it.next(); charS[i] = c; } i++; } StringBuilder sb = new StringBuilder(); for (int j = 0; j < n; j++) { sb.append(charS[j]); } System.out.println(sb.toString()); } } }