【发布时间】:2017-02-28 10:13:00
【问题描述】:
说明如下:
“编写一个函数,该函数将从列表中找到一个单词的所有字谜。您将得到两个输入,一个单词和一个带有单词的数组。您应该返回一个包含所有字谜的数组,如果有则返回一个空数组没有。例如:
anagrams('abba', ['aabb', 'abcd', 'bbaa', 'dada']) => ['aabb', 'bbaa']"
我找到了一个 sn-p,它采用第一个参数并提供所有可能的字符组合。我现在的麻烦是弄清楚如何将此数组与第二个参数匹配,并返回一些结果..
function allAnagrams (word,words) {
if (word.length < 2) {
return [word];
} else {
var allAnswers = [];
for (var i = 0; i < word.length; i++) {
var letter = word[i];
var shorterWord = word.substr(0, i) + word.substr(i + 1, word.length - 1);
var shortwordArray = allAnagrams(shorterWord);
for (var j = 0; j < shortwordArray.length; j++) {
allAnswers.push(letter + shortwordArray[j]);
}
}
return allAnswers;
}
}
allAnagrams("abc",["acb","cba","bac","bca"]);
我的直觉是将单词拆分成一个数组,然后再嵌套一个 for 循环来匹配需要匹配的内容。但是,我似乎在处理范围时遇到了一些问题并不断破坏功能,所以我求助于你们这些聪明的人。如果您有时间,我将不胜感激如何从这里解决这个问题。
【问题讨论】:
标签: javascript arrays algorithm scope closures