5922.统计出现过一次的公共字符串
好久没做双周赛了,没想到这第一场就碰到这么水的题,让我给ak了,太离谱了。
题目描述
给你两个字符串数组
words1
和words2
,请你返回在两个字符串数组中 都恰好出现一次 的字符串的数目。
示例 1:
输入:words1 = ["leetcode","is","amazing","as","is"], words2 = ["amazing","leetcode","is"]
输出:2
解释:
- "leetcode" 在两个数组中都恰好出现一次,计入答案。
- "amazing" 在两个数组中都恰好出现一次,计入答案。
- "is" 在两个数组中都出现过,但在 words1 中出现了 2 次,不计入答案。
- "as" 在 words1 中出现了一次,但是在 words2 中没有出现过,不计入答案。
所以,有 2 个字符串在两个数组中都恰好出现了一次。
解题思路
建立两个哈希表记录出现的词频,之后遍历某一个哈希表,判断该字符串是否在两个哈希表中都只出现一次。
public int countWords(String[] words1, String[] words2) {
Map<String,Integer> wordMap1 = new HashMap<>();
Map<String,Integer> wordMap2 = new HashMap<>();
for(String s:words1){
wordMap1.put(s, wordMap1.getOrDefault(s, 0)+1);
}
for(String s:words2){
wordMap2.put(s, wordMap2.getOrDefault(s, 0)+1);
}
int ans = 0;
for(String s:wordMap1.keySet()) {
if(wordMap1.get(s)==1&&wordMap2.getOrDefault(s, 0)==1) {
ans++;
}
}
return ans;
}
5923. 从房屋收集雨水需要的最少水桶数
给你一个下标从 0 开始的字符串
street
。street
中每个字符要么是表示房屋的'H'
,要么是表示空位的'.'
。你可以在 空位 放置水桶,从相邻的房屋收集雨水。位置在
i - 1
或者i + 1
的水桶可以收集位置为 i 处房屋的雨水。一个水桶如果相邻两个位置都有房屋,那么它可以收集 两个 房屋的雨水。在确保每个房屋旁边都 至少 有一个水桶的前提下,请你返回需要的最少水桶数。如果无解请返回
-1
。
示例 1:
输入:street = "H..H"
输出:2
解释:
我们可以在下标为 1 和 2 处放水桶。
"H..H" -> "HBBH"('B' 表示放置水桶)。
下标为 0 处的房屋