题解 | #字符串排序#

字符串排序

https://www.nowcoder.com/practice/5af18ba2eb45443aa91a11e848aa6723

import java.util.ArrayList;
import java.util.Comparator;
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int numOfStr = sc.nextInt();
        sc.nextLine();//消耗掉nextInt的换行符
        ArrayList<String> strs = new ArrayList<>();
        for (int i = 0; i < numOfStr; i++) {
            strs.add(sc.nextLine());
        }
        strs.sort(new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                int numOfComp = Math.min(o1.length(), o2.length());//比较的次数
                int len1 = o1.length();
                int len2 = o2.length();

                int flag =
                    -1;//0 1 -1无所谓 for里面一定会更改 -1 o1排在前面 大写较小 排前面  ab abc 这种情况 ab排前面
                for (int i = 0; i < numOfComp; i++) {

                    char c1 = o1.charAt(i);
                    char c2 = o2.charAt(i);
                    if (c1 < c2) {
                        flag = -1;
                        break;//比较出来谁在前面了 就不能比较后面了  比较后面flag可能会改变
                    } else if (c1 > c2) {
                        flag = 1;
                        break;
                    } else {
                        flag = 0;
                        if (i == (numOfComp -
                                  1)) {//比较到最后一位了  ab 排在 abc 前面  所以 len1<len2的时候设为-1
                            flag = len1 < len2 ? (-1) : 1;
                        }
                        continue;//目前位置 都是相等的  继续比较 emmmm现在看来 似乎没必要写着一句 不过为了这个注释 还是不删了
                    }
                }
                return flag;
            }
        });

        for (String s : strs) {
            System.out.println(s);
        }
    }
}

全部评论

相关推荐

2025-12-28 16:32
重庆邮电大学 Java
程序员花海:1.技能放最后,来面试默认你都会,技能没啥用 2.实习写的看起来没啥含金量,多读读部门文档,包装下 接LLM这个没含金量 也不要用重构这种 不会给实习生做的 3.抽奖这个还是Demo项目,实际在公司里面要考虑策略,满减,触发点,触发规则 库存 之类的,不是这个项目这么简单 4.教育背景提前,格式为 教育背景 实习 项目 技能 自我评价
简历被挂麻了,求建议
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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