题目
思路
- 第一眼看非常简单甚至想跳过,第二下开始做的时候发现不简单了。
- 去看了题解,主要是不理解怎么实现规则1和规则2的,查了下别人用的方法。
- 题解用 toLowerCase() 方法将字符串转换为小写 然后再比较大小,这样的话确实可以实现无视大小写且按照顺序排序,学习学习。
- o1-o2就是说按照它们的小写排序
vec.sort(new Comparator<Character>() {
public int compare(Character o1, Character o2) {
return Character.toLowerCase(o1) - Character.toLowerCase(o2);
}
});
题解
import java.util.*;
class Solution {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
String str = s.nextLine();
Vector<Character> vec = new Vector<Character>();
for(int i=0;i<str.length();i++){
if(Character.isLetter(str.charAt(i))){
vec.add(str.charAt(i));
}
}
vec.sort(new Comparator<Character>() {
public int compare(Character o1, Character o2) {
return Character.toLowerCase(o1) - Character.toLowerCase(o2);
}
});
StringBuilder result = new StringBuilder();
int j =0;
for(int i=0;i<str.length();i++){
if(Character.isLetter(str.charAt(i))){
result.append(vec.elementAt(j++));
}else{
result.append(str.charAt(i));
}
}
System.out.println(result.toString());
return ;
}
}