import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
import java.util.Arrays;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int num = in.nextInt();// 获取字典中单词个数
List<String> strList = new ArrayList<>(num); // 定义一个集合,用于存放字典单词
for (int i = 0 ; i < num; i++) { // 获取字典
String str = in.next();
strList.add(str);
}
String strFind = in.next(); // 获取需要进行查找的单词
int k = in.nextInt(); // 获取K
List<String> wordList = new ArrayList<>(); // 定义一个集合,用于存放查找到的兄弟单词
for (int i = 0; i < num; i++) { // 进行兄弟单词查找
if (isMatche(strList.get(i), strFind)) { // 可以与查找的单词进行匹配
wordList.add(strList.get(i));
}
}
Collections.sort(wordList); // 对兄弟单词集合进行排序
System.out.println(wordList.size()); // 输出兄弟单词个数
if (k <= wordList.size()) { // 输出第K个兄弟单词
System.out.println(wordList.get(k - 1));
}
}
public static boolean isMatche(String a, String b) {//判断字符串a是否为字符串b的兄弟单词
if (a.equals(b)) { // 两个字符串相等,则不是兄弟字符
return false;
} else {// 字符串不相等,但排序后相等,即为兄弟字符串,排序后不等,则为非兄弟字符串
String[] as = a.split("");
String[] bs = b.split("");
Arrays.sort(as);
Arrays.sort(bs);
if (Arrays.equals(as, bs)) {//equals是字符串进行对比的,Arrays.equals是字符数组对比的
return true;
} else {
return false;
}
}
}
}
HJ27查找兄弟单词(java详解)
于 2023-03-10 14:43:11 首次发布