题解 | #字符串排序#
字符串排序
https://www.nowcoder.com/practice/5190a1db6f4f4ddb92fd9c365c944584
import java.util.ArrayList; import java.util.Comparator; 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.hasNextLine()) { // 注意 while 处理多个 case String str = in.nextLine(); ArrayList<Character> list = new ArrayList<>(); //初始化字符串数组 for(char c:str.toCharArray()){ if(Character.isLetter(c)){ list.add(c); } } //使用匿名内部类改写排序规则 list.sort(new Comparator<Character>(){ public int compare(Character o1,Character o2){ return Character.toLowerCase(o1)-Character.toLowerCase(o2); } }); //重新合并字符串 StringBuilder sb = new StringBuilder(); for(int i = 0,j = 0;i<str.length();i++){ //当原来的位置是字母时填入排好序的字母 if(Character.isLetter(str.charAt(i))){ sb.append(list.get(j++)); //当原来的位置是其他字符时,填入字符串原本的字符 }else{ sb.append(str.charAt(i)); } } System.out.print(sb.toString()); } } }