所以我有个问题有点奇怪。
我有一个“word”对象列表。“word”对象包含一个字符串mycword,它等于传递到该单词中的字符串的规范版本。
例如:
单词一=新词(“cba”);
one.getMyCWord(); // returns abc
规范格式是字符串中已排序的字符。
所以现在我有了一个单词列表,在这里我可以访问它们所包含的字符串的规范版本。
我需要一个算法来创建“子列表”,它是包含一组单词的列表,这些单词是每个单词的anagrams。
如果我有:
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));
}
如何正确构建子列表?
最佳答案
这将循环浏览wordlist
中的所有单词,如果它们是anagram,则将它们放在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);
}