只需要统计单词里各个字母出现的次数,次数都一样即为兄弟单词。
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int count = in.nextInt();
String[] ss = new String[count];
for (int i = 0; i < count; i++) {
ss[i] = in.next();
}
String s = in.next();
int k = in.nextInt();
Map<Character, Integer> sp = new HashMap<>();
for (int i = 0; i < s.length(); i++) {
if (sp.containsKey(s.charAt(i))) {
sp.put(s.charAt(i), sp.get(s.charAt(i)) + 1);
} else {
sp.put(s.charAt(i), 1);
}
}
ArrayList<String> list = new ArrayList<>();
for (int j = 0; j < count; j++) {
String b = ss[j];
if(b.length() != s.length()) continue;
Map<Character, Integer> bp = new HashMap<>();
boolean same = true;
for (int i = 0; i < b.length(); i++) {
if(s.charAt(i) != b.charAt(i)){
same = false;
}
if (bp.containsKey(b.charAt(i))) {
bp.put(b.charAt(i), bp.get(b.charAt(i)) + 1);
} else {
bp.put(b.charAt(i), 1);
}
}
if(same) continue;
boolean bro = true;
for(char key : bp.keySet()){
if(bp.get(key) != sp.get(key)){
bro = false;
break;
}
}
if(bro){
list.add(b);
}
}
list.sort((o1,o2)->o1.compareTo(o2));
System.out.println(list.size());
if(k>0 && k<=list.size()){
System.out.println(list.get(k-1));
}
}
}

京公网安备 11010502036488号