描述 |
|
---|---|
知识点 | 查找 |
运行时间限制 | 10M |
内存限制 | 128 |
输入 | 先输入字典中单词的个数,再输入n个单词作为字典单词。 |
输出 | 根据输入,输出查找到的兄弟单词的个数 输出指定的第n个兄弟单词 |
样例输入 | 3 abc bca cab abc 1 |
样例输出 | 2 bca |
重点:兄弟单词在字典中的排序(Collections.sort(list)||Arrays.sort(arr[]))便可以解决。
import java.util.*;
import java.util.Map.Entry;
public class Main{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
int n=sc.nextInt();
String[] ss=new String[n];
List<String> list=new ArrayList<>();
for(int i=0;i<n;i++){ss[i]=sc.next();}
String os=sc.next();
int index=sc.nextInt();
for(int i=0;i<ss.length;i++){
if(match(ss[i],os)){list.add(ss[i]);}
}
Collections.sort(list);
System.out.println(list.size());
System.out.println(list.get(index-1));
}sc.close();
}
private static boolean match(String s1,String s){
if(s1.length()!=s.length()||s1.equals(s)){return false;}
//int flag=0;
else{char[]ch=s1.toCharArray();
Arrays.sort(ch);
String ss1=new String(ch);
char[]ch2=s.toCharArray();
Arrays.sort(ch2);
String ss2=new String(ch2);
if(ss1.equals(ss2)){return true;}
return false;}
}
}
判断两个字符串是否包含相同的字符另一种方法
private static boolean isBrother(String s1, String s2) {
int len1 = s1.length();
int len2 = s2.length();
if (len1 != len2 || s1.equals(s2))
return false;
else {
int hash[] = new int[26];
for (int i = 0; i < len1; i++)
hash[s1.charAt(i) - 'a']++;
for (int i = 0; i < len1; i++)
hash[s2.charAt(i) - 'a']--;
for (int i = 0; i < len1; i++)
if (hash[i] != 0)
return false;
return true;
}
}