题解 | #查找兄弟单词#
查找兄弟单词
https://www.nowcoder.com/practice/03ba8aeeef73400ca7a37a5f3370fe68
给两个长度相等,但不同的字符串 的字符排序,如果排序后相等,那代表两个字符串为兄弟。
最后要注意 k-1 不能超出 兄弟的个数,不然会报错 越界。死在这了。。。
import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNext()) { // 注意 while 处理多个 case
int n = in.nextInt();
ArrayList<String> list = new ArrayList<>();
for(int i=0; i<n; i++){
list.add(in.next());
}
String x = in.next();
int k = in.nextInt();
ArrayList<String> broList = new ArrayList<>();
for(String s:list){
// 要判断是不是兄弟,长度必须要一样,而且不能相等
if(s.length() == x.length() && !s.equals(x)){
char[] arrS = s.toCharArray();
char[] arrX = x.toCharArray();
Arrays.sort(arrS);
Arrays.sort(arrX);
int d = 0;
for(int i=0; i<s.length(); i++){
if(arrS[i] != arrX[i]){
d=1;
}
}
if(d == 0){
broList.add(s);
}
}
}
Collections.sort(broList);
System.out.println(broList.size());
if(k-1 < broList.size()){
System.out.println(broList.get(k-1));
}
}
}
}
查看1道真题和解析