题解 | #查找兄弟单词#

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

    }
}



全部评论

相关推荐

不愿透露姓名的神秘牛友
07-23 14:18
点赞 评论 收藏
分享
湫湫湫不会java:先投着吧,大概率找不到实习,没实习的时候再加个项目,然后把个人评价和荣誉奖项删了,赶紧成为八股战神吧,没实习没学历,秋招机会估计不多,把握机会。或者说秋招时间去冲实习,春招冲offer,但是压力会比较大
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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