【发布时间】:2021-04-21 15:22:09
【问题描述】:
问题:
给定两个字符串数组,对于列表(查询)中的每个字符串,确定它在另一个列表(字典)中有多少个字谜。 它应该返回一个整数数组。
例子:
query = ["a", "nark", "bs", "hack", "stair"]
dictionary = ['hack', 'a', 'rank', 'khac', 'ackh', 'kran', 'rankhacker', 'a', 'ab', 'ba', 'stairs', 'raits']
答案是[2, 2, 0, 3, 1],因为query[0] ('a') 在dictionary 中有2 个字谜:'a' 和'a' 等等...
这是我想出的代码:
function sortArray(array) {
let answer = [];
for(let i = 0; i< array.length ; i++) {
let data = array[i].split('').sort().join('');
answer.push(data);
}
return answer;
}
function stringAnagram(dictionary, query) {
// Write your code here
let sortedDict = sortArray(dictionary);
let sortedQuery = sortArray(query);
let answer = [];
console.log(sortedDict.length);
console.log(sortedQuery.length);
sortedQuery.map(data => {
let i = 0;
sortedDict.forEach(dictData => {
if(data === dictData)
i++;
})
answer.push(i);
})
return answer;
}
但是,对于较长的测试用例,它会返回超时错误。需要一些帮助来优化它。有什么建议?我正在尝试在 JavaScript 中实现它。
【问题讨论】:
-
.sort()很贵,尽量避免 -
谢谢叶夫根。如果两个字符串是字谜,还有其他方法可以比较吗?
-
顺便说一句,这个问题已经回答了stackoverflow.com/questions/64685582/…
标签: javascript algorithm anagram