题解 | #字符串排序#
字符串排序
https://www.nowcoder.com/practice/5190a1db6f4f4ddb92fd9c365c944584
import java.util.ArrayList; import java.util.Collections; import java.util.LinkedList; import java.util.List; import java.util.Scanner; //写一个比较器就可以了,用LinkedList很方便pop // 注意类名必须为 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(); s = sortStr(s); System.out.println(s); } } private static String sortStr(String s){ List<Character> list = new ArrayList<>(); for(int i = 0;i<s.length();i++){ char c = s.charAt(i); if(c >= 'a' && c <= 'z'){ list.add(c); }else if(c >= 'A' && c <= 'Z'){ list.add(c); } } Collections.sort(list, (c1,c2) -> { c1 = Character.toUpperCase(c1); c2 = Character.toUpperCase(c2); if(c1 == c2){ return 0; }else{ return c1 - c2; } }); StringBuilder sb = new StringBuilder(); LinkedList<Character> listCopy = new LinkedList(list); for(int i = 0;i<s.length();i++){ char c = s.charAt(i); if((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')){ sb.append(listCopy.pop()); }else{ sb.append(c); } } return sb.toString(); } }