题解 | #字符串排序#
字符串排序
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); // // 注意 hasNext 和 hasNextLine 的区别 // while (in.hasNextLine()) { // 注意 while 处理多个 case // String s = in.nextLine(); // } List<Character> list = new ArrayList<>(); List<Integer> pos = new ArrayList<>(); String s = in.nextLine(); char[] chars = s.toCharArray(); 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]); pos.add(i); } } Collections.sort(list, new Comparator<Character>() { @Override public int compare(Character o1, Character o2) { int x = (o1.charValue() >= 'a' && o1.charValue() <= 'z') ? o1.charValue() - 32 : o1.charValue(); int y = (o2.charValue() >= 'a' && o2.charValue() <= 'z') ? o2.charValue() - 32 : o2.charValue();; return x - y; } }); for (int i = 0; i < pos.size(); i++) { chars[pos.get(i)] = list.get(i); } String s1 = String.valueOf(chars); System.out.println(s1); } }