我目前正在研究字谜求解器。我看到一篇非常好的帖子,其中有一个建议是在比较之前按字母顺序排列用户输入和字典列表的字母。这似乎很有趣,所以我正在尝试一下。以前我使用排列,但我想要一些我最终可以(并且有效地)用来解决多词字谜的东西。
我可以将我的用户输入和字典放入 char 数组并按字母顺序排序。现在我需要比较每一个,这样我就可以确定某个东西是否是字谜。我考虑采用按字母顺序排列的用户输入并确定按字母顺序排列的字典是否包含它。我已经在下面发布了我的代码。你可以猜到我对这个过程的逻辑有点困惑。我想知道是否有人可以帮助我理顺一下逻辑。谢谢你的帮助。
public class AnagramSolver1 {
public static void main(String[] args) throws IOException {
List<String> dictionary = new ArrayList<String>();
List<String> inputList = new ArrayList<String>();
BufferedReader in = new BufferedReader(new FileReader("src/dictionary.txt"));
String line = null;
Scanner scan = new Scanner(System.in);
while (null!=(line=in.readLine())){
dictionary.add(line);
}
in.close();
char[] sortDictionary;
char[] inputSort;
System.out.println("Enter Word: ");
String input = scan.next();
inputList.add(input);
//Getting a little confused here. I thought about sorting my input
//then iterating through my dictionary (while sorting it too) and comparing
//thus far it produces nothing
for(int i = 0; i < inputList.size(); i++){
inputSort = inputList.get(i).toCharArray();
Arrays.sort(inputSort);
for (int j = 0; j < dictionary.size(); j++) {
sortDictionary = dictionary.get(i).toCharArray();
Arrays.sort(sortDictionary);
if(inputSort.equals(sortDictionary)){
System.out.println("Anagram" +dictionary.get(i));
} //end if
}//end for
}//end for
}//end main
}