查找字谜JavaScript jQuery

时间:2011-10-14 02:42:34

标签: javascript jquery string anagram

假设我有一个像

这样的列表

犬 狗 神 狗 狗狗 斑马 木

我想要做的是查找列表中的所有单词,无论是否大小写,或者无论实际单词如何。我想匹配这些字母并计算一下。所以从上面

狗,dOg,上帝都会成为一个匹配,在这种情况下会返回“3”作为计数,但是狗,狗,斑马,木头......都将是独一无二的,所有人都将返回1作为计数。虽然我知道这是可能的,但我不知道从哪里开始。 anagram概念让我有点失望。有什么想法吗?

2 个答案:

答案 0 :(得分:5)

var words = new Array("Dog", "dOg", "God", "doggy", "dogg","Zebra", "Wood");
var unique = {};

// iterate over all the words
for (i=0; i < words.length; i++) {

    // get the word, all lowercase
    var word = words[i].toLowerCase();

    // sort the word's letters
    word = word.split('').sort().join('')

    // keep a count of unique combinations
    if(unique[word])
        unique[word] += 1;
    else
        unique[word] = 1;
}

// print the histogram
for (u in unique)
    document.write(u + ": " + unique[u] + "<br/>")

答案 1 :(得分:2)

这就是我想出来的...... jsfiddle here

$(document).ready(function() {
    var mywords = ['Dog', 'dOg', 'God', 'doggy', 'dogg', 'Zebra', 'Wood'];
    var finalArr = {};

    for (var i = 0; i < mywords.length; i++) {
        var temp = mywords[i].toLowerCase();
        var letters = temp.split('');
        var sorted = letters.sort();
        var final = sorted.join("");
        if(typeof finalArr[final] != 'undefined'){
            finalArr[final] ++;
        } else {
            finalArr[final] = 1;
        }
    }
    console.log(finalArr);
    for(var i in finalArr) {
        alert(i + ': ' + finalArr[i]);
        document.write(i + ': ' + finalArr[i] + "<br/>");
    }
});