题解 | #查找兄弟单词#

用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));
        }

    }
}



全部评论

相关推荐

流浪的神仙:无恶意,算法一般好像都得9硕才能干算法太卷啦
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务