京东-2025届秋招-后端开发工程师-第6批-20250914
京东-2025届秋招-后端开发工程师-第6批-20250914
时间:2024-09-14 09:00





















编程
1


2


代码:
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

