题解 | #字符串排序#

字符串排序

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

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNext()) { // 注意 while 处理多个 case
            String s = in.nextLine();
            List<Character> list = new ArrayList<>();
            for (int i = 0; i < s.length(); i++) {
                if (Character.isLetter(s.charAt(i))) {
                    list.add(s.charAt(i));
                }
            }
            list.sort((a, b)->Character.toLowerCase(a) - Character.toLowerCase(b));//lambda表达式
            StringBuilder sb = new StringBuilder();
            for (int i = 0,j=0; i < s.length(); i++) {
                if (Character.isLetter(s.charAt(i))) {
                    sb.append(list.get(j++));
                }else{
                    sb.append(s.charAt(i));
                }
            }
            System.out.println(sb.toString());
        }
    }
}

看大伙的题解才搞出来的,思想是:

1.先创建一个列表,将输入字符串的字母一个一个添加进去。

2.对列表排序,这里使用List接口的sort方法,重写Comparator接口,让大小写字母一起排序。

3.新建一个StringBuider对象sb,重新组合字符串。遍历字符串,碰到字母用列表元素替换,列表索引+1,其他元素就直接使用原字符串元素。

4.调用sb的toString()方法即可。

全部评论

相关推荐

迟缓的斜杠青年巴比Q...:简历被投过的公司卖出去了,我前两天遇到过更离谱的,打电话来问我有没有意向报班学Java学习,服了,还拿我学校一个学长在他们那报班学了之后干了华为OD当招牌
点赞 评论 收藏
分享
白火同学:能。我当初应届沟通了1200,收简历50,面试10左右吧,加油投吧
投了多少份简历才上岸
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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