题解 | #字符串排序#
字符串排序
http://www.nowcoder.com/practice/5190a1db6f4f4ddb92fd9c365c944584
Character.isLetter() 方法用于判断指定字符是否为字母。如果字符为字母,则返回 true;否则返回 false。 toLowerCase() 方法用于将大写字符转换为小写。返回转换后字符的小写形式,如果有的话;否则返回字符本身。 使用如下方法进行排序:其中使用了java8的拉姆达表达式。characters.sort(Comparator.comparingInt(Character::toLowerCase));
import java.util.ArrayList; import java.util.Comparator; import java.util.List; import java.util.Scanner; /** * @Description 字符串排序 * @Author haixiaofei * @Date 2022/2/15 9:20 **/ public class Main { public static void main(String[] args) { Scanner input = new Scanner(System.in); while (input.hasNextLine()){ String str = input.nextLine(); str = sort(str); System.out.println(str); } } public static String sort(String str) { List<Character> characters = new ArrayList<>(); for (char ch : str.toCharArray()){ if (Character.isLetter(ch)) { characters.add(ch); } } //将英文字母先排序好 characters.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))) { result.append(characters.get(j++)); } else { result.append(str.charAt(i)); } } return result.toString(); } }