查找兄弟单词——编程题
程序员文章站
2024-03-25 18:34:10
...
输入描述
输出描述
根据输入,输出查找到的兄弟单词的个数
示例:
题目描述太过于复杂了,直接看输入输出案例比较好理解。
import java.util.Arrays;
import java.util.Scanner;
//寻找兄弟单词
public class SearchBrotherwords {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()){
int n = sc.nextInt();
String[] str = new String[n];
String result = "";
for(int i = 0;i< n;i++){
str[i] = sc.next();
}
//将输入的字符串存到字符串数组
Arrays.sort(str);
//将字符数组用Arrays.sort()方法 排序后存放 便于比较
String target = sc.next();
//输入目标单词
int k = sc.nextInt();
//要输出第k个兄弟单词
int count = 0;//计算兄弟单词
for (int i = 0;i < n;i++){
if(Isfriend(target,str[i])){
//调用方法进行比较,如果是兄弟单词,计数器+1
count += 1;
if(k == count){
//+到第k个兄弟单词时 直接将兄弟单词传给result,便于后面输出
result = str[i];
}
}
}
System.out.println(count+" ");
//输出兄弟单词数目
if(count >= k){
//判断输出第k个单词
System.out.println(result);
}
}
}
//判断是否是兄弟单词的方法
private static boolean Isfriend(String S1, String S2){
boolean b = false;
if(S1.length() != S2.length()){
//长度不相等返回false
b = false;
}
if(S1.equals(S2)){
//equals判断不相等 返回 false
b = false;
}else {
if(sort(S1).equals(sort(S2))){
//排序后相等返回true 这里用了自己定义的sort排序方法
b = true;
}
}
return b;
}
//自己定义的排序方法
private static String sort(String str){
char[] s = str.toCharArray();
String result = "";
Arrays.sort(s);
for(int i = 0;i<s.length;i++){
result += s[i];
}
return result;
}
}