题解 | #查找兄弟单词#

查找兄弟单词

https://www.nowcoder.com/practice/03ba8aeeef73400ca7a37a5f3370fe68

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeSet;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while(in.hasNext()){
            int num = in.nextInt();
            List<String> list = new ArrayList<>();
            for(int i=0 ; i<num+2 ; ++i){
                String s = in.next();
                list.add(s);
            }
            String origin = list.get(num);
            int sortNum = Integer.valueOf(list.get(num+1));
            //System.out.println(origin);
            //System.out.println(sortNum);

            Map<Character, Integer> hashmap = new HashMap<>();        
            //把要寻找兄弟节点的字符放入
            for(int i=0 ; i<origin.length() ; ++i){
                char c = origin.charAt(i);
                hashmap.put(c, hashmap.getOrDefault(c,0)+1);
            }
            //System.out.println(hashmap);

            List<String> ts = new ArrayList<>();
            int broNum = 0;
            for(int i=0 ; i<num ; ++i){
                if(!list.get(i).equals(origin) && isBro(hashmap, list.get(i))){
                    ts.add(list.get(i));
                    //System.out.println(list.get(i));
                }
            }
            System.out.println(ts.size());
            if(ts.size() >= sortNum){
                Collections.sort(ts);
                System.out.println(ts.get(sortNum-1));
            }

        }
    }

    public static boolean isBro(Map<Character, Integer> hashmap, String s2){
        Map<Character, Integer> hashmap2 = new HashMap<>();
        for(int i=0 ; i<s2.length() ; ++i){
            char c = s2.charAt(i);
            if(!hashmap.containsKey(c)){
                return false;
            }
            else{
                hashmap2.put(c, hashmap2.getOrDefault(c,0)+1);
            }
        }
        for(Character key : hashmap.keySet()){
            if(!hashmap2.containsKey(key) || hashmap.get(key) != hashmap2.get(key)){
                return false;
            }
        }
        return true;

    }
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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