在列表中查找字谜

时间:2014-11-26 02:59:34

标签: java algorithm list

所以我有一个有点奇怪的问题。

我有一个" 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));

}

如何正确构建子列表?

2 个答案:

答案 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,将规范字词映射到字词列表。迭代你的话。对于每个单词:

  • 规范词是地图中的关键吗?如果没有,请添加它并将空列表与其关联。

  • 查找与规范字相关联的列表,并将实际字添加到其中。