javascript - 优化 Nodejs 代码以在数组中查找字符串的字谜。解决方案不应该使用所有子集来查找字符串的字谜
问题描述
我想在数组中存储一对字谜。
输入将是数组。
例子:
let inputArray = ["abcd", "dbac", "adfs", "adsf", "bDca"];
它应该忽略字母的大小写。这里的“abcd 和 bDca”是字谜。
输出应该是一个包含一对字谜的数组。
Example: [
'abcd is anagram of dbac',
'adfs is anagram of adsf',
'abcd is anagram of bDca'
]
解决方案
我最近解决了一个类似于 java 8 中的问题,我可以很容易地为你翻译成 javascript。
执行此操作的天真方法是遍历所有可能性,然后遍历数组以查看是否有任何匹配项。但是,这将非常缓慢。为了克服这个问题,我们可以创建一个“模式”并在我们沿着阵列移动时将其与其他模式匹配。
以下代码应该可以解决您的问题
function pattern(str){
let map = new Map()
let curcount = 0
let pattern = ""
for(var i = 0; i < str.length; i++){
if(!map.get(str.charAt(i)+'')){
pattern+=String.fromCharCode(curcount);
map.put(str.charAt(i)+"",String.fromCharCode(curcount));
curcount++;
}
else{
pattern+=map.get(str.charAt(i)+"");
}
}
}
剩下的就很简单了,再做一个map(key是pattern,value是string的array)并记录一个pattern的每个实例,如果存在的话,pop这个词到数组中。你会被设置的:)