题解 | #查找兄弟单词#
用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)); } } }