题解 | #字符串排序#

字符串排序

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();
    }
}


全部评论

相关推荐

点赞 评论 收藏
分享
ArisRobert:统一解释一下,第4点的意思是,公司按需通知员工,没被通知到的员工是没法去上班的,所以只要没被通知到,就自动离职。就是一种比较抽象的裁员。
点赞 评论 收藏
分享
评论
14
6
分享
牛客网
牛客企业服务