package com.patience.interview.huawei;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
/**
* 查找兄弟字符串
* @author Green.Gee
* @date 2022/8/31 10:36
* @email green.gee.lu@gmail.com
*/
public class FindWordBorther {
// input 3 abc bca cab abc 1
// output 2
// bca
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String s = bf.readLine();
String [] lines = s.split("\\s");
int len = lines.length;
int n = Integer.valueOf(lines[0]);
System.err.printf("n is %s\n",n);
String x = lines[len - 2];
System.err.printf("x is %s\n",x);
int k = Integer.valueOf(lines[len - 1]);
System.err.printf("k is %s\n",k);
List<String> n_arr = new ArrayList<>(8);
for(int i = 1;i <= n; i++){
if(isBrother(x,lines[i])){
n_arr.add(lines[i]);
}
}
System.out.println(n_arr.size());
if(n_arr.size() > 0){
Collections.sort(n_arr);
if((k -1) < n_arr.size()){
System.out.println(n_arr.get(k - 1));
}
}
}
//计算兄弟节点
//定义一个单词的“兄弟单词”为:交换该单词字母顺序(注:可以交换任意次),而不添加、删除、修改原有的字母就能生成的单词。
//兄弟单词要求和原来的单词不同。例如: ab 和 ba 是兄弟单词。 ab 和 ab 则不是兄弟单词。
private static boolean isBrother(String x, String line) {
if(x.equals(line) ||
line.length() <= 0 ||
x.length() != line.length())// 等于自身排除 & 长度相等进行比较
return false;
char [] x_arr = x.toCharArray();
char [] y_arr = line.toCharArray();
Arrays.sort(x_arr);
Arrays.sort(y_arr);
return new String(x_arr).equals(new String(y_arr));
}
}
07-01
9741
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)