`Given two string arrays words1 and words2, return the number of strings that appear exactly once in each of the two arrays.
Input: words1 = ["leetcode","is","amazing","as","is"], words2 = ["amazing","leetcode","is"]
Output: 2
Explanation:
- "leetcode" appears exactly once in each of the two arrays. We count this string.
- "amazing" appears exactly once in each of the two arrays. We count this string.
- "is" appears in each of the two arrays, but there are 2 occurrences of it in words1. We do not count this string.
- "as" appears once in words1, but does not appear in words2. We do not count this string. Thus, there are 2 strings that appear exactly once in each of the two arrays. `
/**
* @param {string[]} words1
* @param {string[]} words2
* @return {number}
*/
var countWords = function (words1, words2) {
let mapW1 = new Map();
let mapW2 = new Map();
for (let i = 0; i < words1.length; i++) {
if (mapW1.has(words1[i])) {
mapW1.set(words1[i], mapW1.get(words1[i] + 1));
} else {
mapW1.set(words1[i], 1);
}
}
for (let i = 0; i < words2.length; i++) {
if (mapW2.has(words2[i])) {
mapW2.set(words2[i], mapW2.get(words2[i] + 1));
} else {
mapW2.set(words2[i], 1);
}
}
let count = 0;
for (let i = 0; i < words1.length; i++) {
console.log(words1[i]);
if (
mapW1.has(words1[i]) &&
mapW2.has(words1[i]) &&
mapW1.get(words1[i]) === 1 &&
mapW2.get(words1[i]) === 1
) {
count++;
}
}
return count;
};
console.log(
countWords(
["leetcode", "is", "amazing", "as", "is"],
["amazing", "leetcode", "is"]
)
);
Top comments (1)
This content is very helpful for all the users. how to break up a couple from a distance