题解 | #字符串排序#
字符串排序
http://www.nowcoder.com/practice/5190a1db6f4f4ddb92fd9c365c944584
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
String str = sc.nextLine();
//将英文字母收集起来
List<Character> letters = new ArrayList<>();
for(char ch : str.toCharArray()){ //toCharArray() 方法将字符串转换为字符数组。
if(Character.isLetter(ch)){
letters.add(ch);
}
}
//将英文字母先排序,java8的拉姆达表达式
letters.sort(Comparator.comparingInt(Character::toLowerCase));
//若是非英文字母则直接添加
StringBuilder result = new StringBuilder();
for (int i = 0, j = 0; i < str.length(); i++) {
if (Character.isLetter(str.charAt(i))) { //Character.isLetter() 方法用于判断指定字符是否为字母。如果字符为字母,则返回 true;否则返回 false。
result.append(letters.get(j++));
}
else {
result.append(str.charAt(i));
}
}
System.out.println(result);
}
}
}