带有 Javascript 的多个单词 Anagram
Posted
技术标签:
【中文标题】带有 Javascript 的多个单词 Anagram【英文标题】:Multiple Word Anagram with Javascript 【发布时间】:2017-06-17 07:09:48 【问题描述】:我一直在使用来自this thread 的JSFiddle,但不知道 1) 如何让它与多个单词一起工作,例如如果我输入了
苹果香蕉
获取输出
苹果香蕉,香蕉苹果
2) 如果我更改变量以包含多个单词字符串,例如:
var dictionary = [
"apple",
"banana",
"orange",
"pear",
"mandarin orange" ];
我可以输入
橘子
获取输出
橘子
这是上面JSFiddle中的相关代码
var maxCount = 10000;
var dictionary = [
"apple",
"banana",
"orange",
"pear",
"watermelon"
];
function isValidWord(word)
for(var i = 0, n = dictionary.length; i < n; i++)
if(word === dictionary[i])
return true;
return false;
/**
Generates all of the anagrams using a dictionary and an exclusion list read from
an html form.
*/
function runAnagramGenerator(anagramString, excludesString, tout)
var excludes = getExclusionList(excludesString);
var anagrams = [];
generateAnagrams("", anagramString, excludes, anagrams);
//Remove duplicates
uniqueAnagramList = anagrams.filter(function(elem, pos, self)
return self.indexOf(elem) == pos;
);
console.log('Anagrams: ' + uniqueAnagramList.length);
tout.value = "";
for(var i = 0, n = uniqueAnagramList.length; i < n; i++)
tout.value += uniqueAnagramList[i] + "\r\n";
function getExclusionList(excludesString)
var excludes = [];
if (excludesString != "")
var excludesArray = excludesString.split(",");
for(var i = 0, n = excludesArray.length; i < n; i++)
excludes.push(new RegExp(excludesArray[i]));
return excludes;
function generateAnagrams(prefix, postfix, excludes, resultArray)
if(resultArray.length >= maxCount) return;
if (postfix == "")
var meetsConditions = true;
if(isValidWord(prefix) === false) meetsConditions = false;
for(var i = 0, n = excludes.length; i < n; i++)
if(prefix.match(excludes[i]) != null)
meetsConditions = false;
break;
if(meetsConditions)
resultArray.push(prefix);
for(var i = 0, n = postfix.length; i < n; i++)
var prefix2 = prefix + postfix.charAt(i);
var postfix2 = postfix.substring(0,i) + postfix.substring(i+1);
generateAnagrams(prefix2, postfix2, excludes, resultArray);
【问题讨论】:
请在问题中包含相关代码,而不是仅链接到外部资源。 【参考方案1】:1) 将isValidWord改为containsValidWord,稍微改写逻辑
2) 如果您有一个仅由空格组成的剩余前缀,则您有一个匹配项
【讨论】:
以上是关于带有 Javascript 的多个单词 Anagram的主要内容,如果未能解决你的问题,请参考以下文章
查看 div 是不是包含一个或多个输入的单词(Javascript)
Javascript RegExp 用于精确匹配具有特殊字符的多个单词