题解 | #查找兄弟单词#
查找兄弟单词
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;
}
}
查看15道真题和解析