题目描述



输入描述:
先输入字典中单词的个数,再输入n个单词作为字典单词。 输入一个单词,查找其在字典中兄弟单词的个数 再输入数字n
输出描述:
根据输入,输出查找到的兄弟单词的个数
示例1
输入
3 abc bca cab abc 1
输出
2 bca
实现代码:
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
int wordNum = sc.nextInt();
String[] str = new String[wordNum];
for(int i=0;i<wordNum;i++){
str[i] = sc.next();
}
String keyWord = sc.next();
int keyNum = sc.nextInt();
ArrayList<String> list=new ArrayList<String>();
int count = 0;
for(int i=0;i<wordNum;i++){
if(compare(str[i],keyWord)){
list.add(str[i]);
count++;
}
}
Collections.sort(list);
System.out.println(count);
if(keyNum <= list.size()){
System.out.println(list.get(keyNum-1));
}
}
}
public static boolean compare(String str1,String str2){
if(str1.length() != str2.length())
return false;
if(str1.equals(str2))
return false;
Map<Character,Integer> map = new HashMap<Character,Integer>();
for(int i=0;i<str1.length();i++){
if(map.containsKey(str1.charAt(i))){
map.put(str1.charAt(i), map.get(str1.charAt(i))+1);
}else{
map.put(str1.charAt(i), 1);
}
}
for(int i=0;i<str2.length();i++){
if(map.containsKey(str2.charAt(i)) && map.get(str2.charAt(i))==1){
map.remove(str2.charAt(i));
}else if(map.containsKey(str2.charAt(i)) && map.get(str2.charAt(i))>1){
map.put(str2.charAt(i), map.get(str2.charAt(i))-1);
}else{
return false;
}
}
return map.isEmpty();
}
//3 abc bca cab abc 1
}