题目来源
题目描述
题目解析
class Solution {
public:
int countWords(vector<string>& words1, vector<string>& words2) {
std::unordered_map<std::string, int> mapper1, mapper2;
for(auto & word : words1){ // 可能会出现3次、5次,所以不能用set
mapper1[word]++;
}
int ans = 0;
for(auto & word : words2){
if(mapper1[word] == 1){ // 只有words1中刚好出现过一次的才能加入备选
if(mapper2.count(word)){ // 如果word在words2出现次数超过1
--ans;
mapper1.erase(word); // 那么word从mapper1中移除
}else{
++ans;
mapper2[word]++; // 记录出现次数
}
}
}
return ans;
}
};
class Solution {
public:
int countWords(vector<string>& words1, vector<string>& words2) {
std::unordered_map<std::string, int> freq1, freq2;
for(auto & word : words1){
++freq1[word];
}
for(auto & word : words2){
++freq2[word];
}
int ans = 0;
for(const auto &[word, freq] : freq1){
if(freq == 1 && freq2[word] == 1){
++ans;
}
}
return ans;
}
};