所以我有一个有点奇怪的问题。
我有一个" Word"对象。 A" Word" object包含一个字符串myCWord,它等于传入Word的String的规范版本。
例如:
Word one = new Word(" cba");
one.getMyCWord(); // returns abc
规范形式是字符串中的有序字符。
所以现在我有一个单词列表,我可以访问他们持有的字符串的规范版本。
我需要一个算法来创建"子列表"其列表包含一组单词,这些单词是彼此的字谜。
所以,如果我有:
List<AnagramSet> aSet = new LinkedList<AnagramSet>();
List<Word> words = new LinkedList<Word>();
words.add("ok"); // cword returns ko
words.add("abc"); // cword returns abc
words.add("cba"); // cword returns abc still
someMethod(words);
someMethod(List<Word> a) {
// build new sub lists
AnagramSet.add(new Anagram(temp));
}
如何正确构建子列表?
答案 0 :(得分:1)
这会循环显示wordlist
中的所有字词,如果它们是字谜,则会将它们放在anagrams
中。
boolean isAnagram(Word word){
if(word.myCWord() == word){
return true;
} else {
return false;
}
}
void anagramAlgorithm(List<Word> wordlist){
List<Anagram> anagrams = new LinkedList<Anagram>();
for(Word w : worldlist){
if(isAnagram(w)) anagrams.add(new Anagram(w));
}
// Is this what you want?
aSet.add(anagrams);
}
答案 1 :(得分:0)
制作一个HashMap
,将规范字词映射到字词列表。迭代你的话。对于每个单词:
规范词是地图中的关键吗?如果没有,请添加它并将空列表与其关联。
查找与规范字相关联的列表,并将实际字添加到其中。