字符串数组中的字符串频率 创建一个函数,您将获得一个字符串集合和一个查询列表。对于每个查询,都有一个字符串。我们需要打印给定字符串在字符串集合中出现的次数。
示例:
输入:
a[] = [wer, tyu, uio]
b[] = [wer, wer, tyu, oio, tyu]
输出:[2 2 0]
说明:
a[0]
在b[]
答案 0 :(得分:0)
function occur (a,b) {
let count = [];
for (var i = 0; i<= a.length ; i++) {
for (var j = 0;j<= b.length; j++) {
if (a[i]==b[j]) {
return count[i] = count[i]++;
}
}
}
}
console.log(occur(["aaaa","cc" ,"dd"],["aaaa","dd"]));
答案 1 :(得分:0)
在考虑任何查询之前,应使用某种形式的哈希值仅对字符串集合进行一次迭代。 ES6 Map
可以用于此目的。
然后对哈希中的每个条目进行频率计数(用reduce
计数)。
一个想法不仅是返回该哈希,而且返回一个查询该哈希并返回相应频率的函数,如果它不在该哈希中,则返回0。
这是它的外观:
// Returns function that can answer queries for the given collection of strings
function freq(strings) {
const counts = strings.reduce((map, s) => map.set(s, (map.get(s)||0)+1), new Map);
return s => counts.get(s) || 0;
}
// Sample call. The 3 queries are fed into the function returned by freq
const results = ["wer", "tyu", "uio"].map(freq(["wer", "wer", "tyu", "oio", "tyu"]));
console.log(results);