Найти анаграммы JavaScript jQuery - PullRequest
       3

Найти анаграммы JavaScript jQuery

1 голос
/ 14 октября 2011

Скажем, у меня есть список как

Собака собака Бог собачий Догг зебра Вуд

Что я хочу сделать, это найти все слова в списке независимо от регистра или независимо от фактического слова. Я хочу сопоставить буквы и считать. Так сверху

Собака, черт возьми, Бог все будет совпадать и в этом случае вернет "3" в качестве числа, но собачка, дог, зебра, дерево ... все будет уникальным и все вернет 1 как число ... Хотя я знаю, что это возможно, я не знаю, с чего начать. Концепция анаграммы немного сбивает меня с толку. Есть идеи?

Ответы [ 2 ]

5 голосов
/ 14 октября 2011
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/>")
2 голосов
/ 14 октября 2011

вот что я придумал ... jsfiddle здесь

$(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/>");
    }
});
...