题解 | #查找兄弟单词#
用map记录char的个数
import java.io.IOException;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
String[] words = new String[n];
for (int i = 0; i < words.length; i++) {
words[i] = scanner.next();
}
String x = scanner.next();
int k = scanner.nextInt();
HashMap<Character, Integer> xMap = new HashMap<>();
for (char c : x.toCharArray()) {
xMap.put(c, xMap.getOrDefault(c, 0) + 1);
}
List<String> matchList = new ArrayList<>();
for (String word : words) {
if (word.length() == x.length() && !word.equals(x)) {
HashMap<Character, Integer> wMap = new HashMap<>();
for (char c : word.toCharArray()) {
wMap.put(c, wMap.getOrDefault(c, 0) + 1);
}
if (wMap.size() == xMap.size()) {
boolean allMatch = true;
for (Map.Entry<Character, Integer> entry : xMap.entrySet()) {
if (!entry.getValue().equals(wMap.get(entry.getKey()))) {
allMatch = false;
break;
}
}
if (allMatch) {
matchList.add(word);
}
}
}
}
System.out.println(matchList.size());
if (k <= matchList.size()) {
Collections.sort(matchList);
System.out.println(matchList.get(k - 1));
}
}
}
