题解 | #字符串排序#

字符串排序

https://www.nowcoder.com/practice/5190a1db6f4f4ddb92fd9c365c944584

基数排序

过滤掉字符,进行基数排序,由于要考虑大小写出现的顺序,使用链表记录每一个字符,到时候按序输出即可。

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNext()) {
            String s = in.nextLine();
            
            // 记录字母排序,类似基数排序
            List<List<Character>> buckets = new ArrayList<>();
            for(int i = 0; i < 26; i++) {
                buckets.add(new ArrayList<>());
            }
            char[] str = s.toCharArray();
            for(int i = 0; i < str.length; i++) {
                char ch = str[i];
                if(Character.isLetter(ch))
                    buckets.get(Character.toLowerCase(ch) - 'a').add(ch);
            }

            int buck = 0;
            int buckId = 0;
            for(int i = 0; i < str.length; i++) {
                if(Character.isLetter(str[i])) {
                    while(buckId >= buckets.get(buck).size()) {
                        // 寻找下一个桶
                        buck++;
                        buckId = 0;
                    }

                    // 直接修改数组
                    str[i] = buckets.get(buck).get(buckId++);
                }
            }

            System.out.println(String.valueOf(str));
        }
    }
}

全部评论

相关推荐

小肥罗:此乃引蛇出洞之计,勾出你想去杭州的原因再告诉你不在杭州,让你打脸,自己离开。好一招抛砖引玉,虾仁猪心。你回复:计划去杭州,但我心中第一选择是宁波~巧了! 这计名叫“阿Q精神胜利法之厚脸皮不要脸我不尴尬谁爱尴尬谁尴尬去”之计!克制一切!
这个工作能去吗
点赞 评论 收藏
分享
09-22 15:45
门头沟学院 Java
谁给娃offer我给...:我也遇到了,我说只要我通过面试我就去,实际上我根本就不会去😁
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务