题解 | 字符串排序

import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in).useDelimiter("\n");
        int nextInt = scanner.nextInt();
        List<String> list = new ArrayList<>();
        for (int i = 0; i <= nextInt; i++) {
            String e = scanner.nextLine();
            if (list.isEmpty()) {
                list.add(e);
            } else {
                sorted(list, e);
            }
        }
        list.forEach(System.out::println);
    }

    private static void sorted(List<String> list, String e) {
        int l = 0;
        int r = list.size() - 1;
        if (list.contains(e)) {
            list.add(list.indexOf(e), e);
            return;
        }
        while (l < r) {
            int mid = (r - l) / 2 + l;
            String midS = list.get(mid);
            int size = Math.min(e.length(), midS.length());
            int j = 0;
            for (; j < size; j++) {
                if (e.charAt(j) > midS.charAt(j)) {
                    l = mid + 1;
                    break;
                } else if (e.charAt(j) < midS.charAt(j)) {
                    r = mid;
                    break;
                }
            }
            if (j == size) {
                if (e.length() > midS.length()) {
                    l = mid + 1;
                } else if (e.length() < midS.length()) {
                    r = mid;
                }
            }

        }
        list.add(l, e);
    }
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务