1>题目描述
- 题目描述:
- 定义一个单词的“兄弟单词”为:交换该单词字母顺序,而不添加、删除、修改原有的字母就能生成的单词。
- 兄弟单词要求和原来的单词不同。例如:ab和ba是兄弟单词。ab和ab则不是兄弟单词。
- 现在给定你n个单词,另外再给你一个单词str,让你寻找str的兄弟单词里,字典序第k大的那个单词是什么?
- 注意:字典中可能有重复单词。本题含有多组输入数据。
- 输入描述:
- 先输入单词的个数n,再输入n个单词。
- 再输入一个单词,为待查找的单词x
- 最后输入数字k
- 输出描述:
- 输出查找到x的兄弟单词的个数m
- 然后输出查找到的按照字典顺序排序后的第k个兄弟单词,没有符合第k个的话则不用输出。
2>解法一
- 1、筛选兄弟单词
- 相同的单词不是兄弟单词
- 长度不相同的一定不是兄弟单词
- 拥有相同字母并且个数一致的不相同单词是兄弟单词
- 2、对于每一个字符串创建一个Map来存储它对应字符以及对应字符的个数
- 3、通过equals方法来比较是否一致来判断兄弟单词
2.1、代码实现
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int length = sc.nextInt();
String[] arr = new String[length];
for(int i=0;i<length;i++){
arr[i] = sc.next();
}
String str = sc.next();
int n = sc.nextInt();
Match(arr,str,n);
}
public static Map<Character,Integer> getMap(String str){
Map<Character,Integer> map = new HashMap