题解 | #字符串排序#
字符串排序
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();
}
}
查看9道真题和解析