分别用两个哈希表记录两个字符串数组中字符串出现的个数,然后在两个哈希表中找共同拥有的字符串并且出现次数都为1的组合,若出现这种组合,则表示找到一组答案,结果+1。
时间复杂度:O(n+m)。n和m分别表示words1和words2的长度。
空间复杂度:O(n+m)。哈希表的空间
public int countWords(String[] words1, String[] words2) {
int n=words1.length,m=words2.length;
Map<String,Integer> map1=new HashMap<>();
for(int i=0;i<n;i++){
map1.put(words1[i],map1.getOrDefault(words1[i],0)+1);
}
Map<String,Integer> map2=new HashMap<>();
for(int i=0;i<m;i++){
map2.put(words2[i],map2.getOrDefault(words2[i],0)+1);
}
int res=0;
for(String key:map1.keySet()){
int l=map1.get(key);
int r=map2.getOrDefault(key,0);
if(l==1&&r==1){
res++;
}
}
return res;
}
有任何问题,欢迎评论区交流,欢迎评论区提供其它解题思路(代码),也可以点个赞支持一下作者哈😄~