【发布时间】:2015-11-04 03:30:36
【问题描述】:
我知道您可能知道更好更快的方法,但请原谅 - 我正在学习...
我的问题是这个方法应该......但不是我现在的代码......如果特定单词的所有检查字母都存在于第二个列表中的检查单词中,则返回布尔“字谜”TRUE......
我的布尔值仍然是最后一个检查的字母状态,请帮忙。
for (String aWord : aWordsList){ //main List positions loop
tempWordsList = new ArrayList<String>(aWordsList);;
//set anagram TRUE if all letters of examined word found in temp List
boolean anagram = true;
for (int a=0; a<tempWordsList.size(); a++){ //temp List word loop
anagram = true;
for (int i=0; i<aWord.length(); i++){ //main List word Letters loop
anagram = true;
boolean letterFound = true;
for (int letter=0; letter < tempWordsList.get(a).length(); letter++){ //temp List word Letters loop
anagram = true;
String checkedTempWord = tempWordsList.get(a);
char checkedLetter = aWord.charAt(i);
char checkedTempLetter = tempWordsList.get(a).charAt(letter);
if (aWord.charAt(i)==tempWordsList.get(a).charAt(letter)){
letterFound = true;
break;
// OK, jump out and check next letter
}else{
letterFound= false;
}
}
if (anagram == true && letterFound==true) {
anagram=true;
}else{
anagram=false;
}
System.out.println(aWord +" in "+ tempWordsList.get(a) + " : " + aWord.charAt(i) + " " + letterFound);
}
System.out.println(aWord + " has anagram in " + tempWordsList.get(a) + ": " + anagram);
System.out.println();
}
System.out.println(aWord + " " + tempWordsList + " " + anagram);
}
}
}
【问题讨论】:
-
请正确格式化您的代码。 (使用在线格式化程序)。为什么第二行有第二个
;?tempWordsList = new ArrayList<String>(aWordsList);; -
我发现我必须消除不同大小的单词
-
您是否应该将 aWordsList 中的单词与不同列表中的单词进行比较? tempWordsList = new ArrayList
(aWordsList) 创建一个与 aWordsList 内容相同的新列表 -
是的,我把它缩短的部分在上面被删除了: for (Iterator
iterator = tempWordsList.iterator(); iterator.hasNext();) { String string = iterator.next( ); if (string.equals(aWord)) { // 从迭代器和列表中移除当前元素。迭代器.remove(); } -
正如所写的那样,您的代码将始终为 aWordsList 中的每个单词找到至少一个字谜,因为单词本身就符合条件。
标签: java