目录
一、题目
1、题目描述
给你两个字符串数组
words1
和words2
,请你返回在两个字符串数组中 都恰好出现一次 的字符串的数目。
2、接口描述
class Solution {
public:
int countWords(vector<string>& words1, vector<string>& words2) {
}
};C
3、原题链接
二、解题报告
1、思路分析
分别统计两个字符串数组中字符串出现次数,统计那些在两个数组中都只出现一次的。
2、复杂度
时间复杂度: O(n) 空间复杂度:O(U),U为字符集大小
3、代码详解
C++代码
class Solution {
public:
int countWords(vector<string>& words1, vector<string>& words2) {
unordered_map<string , int> hash1 , hash2;
for(auto & x : words1) hash1[x]++;
for(auto & x : words2) hash2[x]++;
int cnt = 0;
for(auto & p : hash1)
cnt += p.second == 1 && hash2[p.first] == 1;
return cnt;
}
};
Python3代码
class Solution:
def countWords(self, words1: List[str], words2: List[str]) -> int:
hash1 , hash2 = Counter(words1) , Counter(words2)
return sum(y == 1 and hash2[x] == 1 for x , y in hash1.items())