题目:输入一个字典(用******结尾),然后再输入若干个单词。每输入一个单词w,你都需要在字典中找出所有可以用w的字母重排后得到的单词,并按照字典序从小到大的顺序在一行中输入(如果不存在,输出:()。输入单词之间用空格或空行隔开,且所有输入单词都由不超过6个小写字母组成。注意,字典中的单词不一定按字典序排列。
Java代码实现:
package java532;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
public class 字母重排 {
public static void main(String[] args) {
List<String> datas = new ArrayList<String>();
Scanner scanner = new Scanner(System.in);
System.out.println("请输入字典:");
//输入存入List中
while(scanner.hasNext())
{
String inputStr = scanner.next();
if(inputStr.equals("******"))
{
break;
}
else
{
datas.add(inputStr);
}
}
System.out.println("-----输入完毕-----");
//输入单词
while(scanner.hasNext())
{
String inputWord = scanner.next();
System.out.println("结果为:");
isIn(datas, inputWord);
}
}
private static void isIn(List<String> datas, String inputWord)
{
for(int i=0;i<datas.size();i++)
{
char[] testArr = inputWord.toCharArray();
char[] arr = datas.get(i).toCharArray();//待比较的
Arrays.sort(testArr);
Arrays.sort(arr);
if(String.valueOf(testArr).equals(String.valueOf(arr)))
{//如果相等了
System.out.println(String.valueOf(datas.get(i)));
break;
}
else if(i == datas.size() -1)
{//所有的都不相等
System.out.println(":(");
}
}
}
}