题解 | #字符串排序#
字符串排序
https://www.nowcoder.com/practice/5190a1db6f4f4ddb92fd9c365c944584
import java.util.ArrayList; 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 s = in.nextLine(); List<Character> list = new ArrayList<>(); for (int i = 0; i < s.length(); i++) { if (Character.isLetter(s.charAt(i))) { list.add(s.charAt(i)); } } list.sort((a, b)->Character.toLowerCase(a) - Character.toLowerCase(b));//lambda表达式 StringBuilder sb = new StringBuilder(); for (int i = 0,j=0; i < s.length(); i++) { if (Character.isLetter(s.charAt(i))) { sb.append(list.get(j++)); }else{ sb.append(s.charAt(i)); } } System.out.println(sb.toString()); } } }
看大伙的题解才搞出来的,思想是:
1.先创建一个列表,将输入字符串的字母一个一个添加进去。
2.对列表排序,这里使用List接口的sort方法,重写Comparator接口,让大小写字母一起排序。
3.新建一个StringBuider对象sb,重新组合字符串。遍历字符串,碰到字母用列表元素替换,列表索引+1,其他元素就直接使用原字符串元素。
4.调用sb的toString()方法即可。