题解 | #字符串排序#
字符串排序
https://www.nowcoder.com/practice/5190a1db6f4f4ddb92fd9c365c944584
import java.util.*; import java.util.stream.Collectors; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 String input = in.nextLine(); char[] chars = input.toCharArray(); char[] newChars = new char[chars.length]; List<Character> list = new ArrayList<>(); for (int i = 0; i < chars.length; i++) { if ((chars[i] >= 'a' && chars[i] <= 'z') || (chars[i] >= 'A' && chars[i] <= 'Z')) { list.add(chars[i]); } else { newChars[i] = chars[i]; } } List<Character> collect = list.stream().sorted((c1, c2) -> { if ((c1 >= 'a' && c1 <= 'z') && (c2 >= 'a' && c2 <= 'z')) { return c1 - c2; } if ((c1 >= 'A' && c1 <= 'Z') && (c2 >= 'A' && c2 <= 'Z')) { return c1 - c2; } if ((c1 >= 'A' && c1 <= 'Z') && (c2 >= 'a' && c2 <= 'z')) { return c1 + 32 - c2; } if ((c1 >= 'a' && c1 <= 'z') && (c2 >= 'A' && c2 <= 'Z')) { return c1 - c2 - 32; } return c1 - c2; }).collect(Collectors.toList()); int n = 0; for (int i = 0; i < newChars.length; i++) { if (newChars[i] == 0) { System.out.print(collect.get(n).charValue()); n = n + 1; } else { System.out.print(newChars[i]); } } } }