Skip to content

京东-2025届秋招-后端开发工程师-第6批-20250914

京东-2025届秋招-后端开发工程师-第6批-20250914

时间:2024-09-14 09:00

screenshot-20240914-09071762screenshot-20240914-09072024screenshot-20240914-09072221screenshot-20240914-09072434screenshot-20240914-09072656screenshot-20240914-09072902screenshot-20240914-09073105screenshot-20240914-09073260screenshot-20240914-09073442screenshot-20240914-09073629screenshot-20240914-09073817screenshot-20240914-09074072screenshot-20240914-09074275screenshot-20240914-09074526screenshot-20240914-09074743screenshot-20240914-09074987screenshot-20240914-09283646screenshot-20240914-09283925screenshot-20240914-09284131screenshot-20240914-09284340screenshot-20240914-09284546

编程

1

screenshot-20240914-09325877screenshot-20240914-09330196

2

screenshot-20240914-09330642screenshot-20240914-09331290

代码:

java
// Description: 京东-2025届秋招-后端开发工程师-第6批-编程第2题
// Accept: 100%
// Date: 2024/09/14

package main;

import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;

public class Main {
    static class CustomStringComparator implements Comparator<String> {
        private final int[] rank;

        public CustomStringComparator(int[] rank) {
            this.rank = rank;
        }

        @Override
        public int compare(String s1, String s2) {
            return compareStrings(s1, s2, rank);
        }

        private int compareStrings(String s1, String s2, int[] rank) {
            //  1. 处理前缀的情况
            int minLength = Math.min(s1.length(), s2.length());
            for (int i = 0; i < minLength; i++) {
                // 比较对应字符的排名
                int rankDiff = rank[s1.charAt(i) - 'a'] - rank[s2.charAt(i) - 'a'];
                if (rankDiff != 0) {
                    return rankDiff;
                }
            }

            // 2. 如果前缀相同,较短的字符串排在前面
            return Integer.compare(s1.length(), s2.length());
      }
    }

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNext()) {
            int[] rank = new int[26];
            String rankStr = in.nextLine();
            for (int i = 0; i < rank.length; i++) {
		rank[rankStr.charAt(i) - 'a'] = i;
            }
            int n = in.nextInt();
            in.nextLine();
            String[] strings = new String[n];
            for (int i = 0; i < n; i++) {
                strings[i] = in.nextLine();
            }

            Arrays.sort(strings, new CustomStringComparator(rank));

            for (int i = 0; i < n; i++) {
                System.out.println(strings[i]);
            }
        }
    }
}

3

screenshot-20240914-09332326screenshot-20240914-09332589