所以我有个问题有点奇怪。
我有一个“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);
}

07-24 04:48