leetcode253场双周赛---好久没做了,第一场就碰到这么水的题。。。

博主分享了在LeetCode双周赛中的四道题目,包括统计出现过一次的公共字符串、收集雨水所需最少水桶数、机器人回家的最小代价以及农场中肥沃金字塔的数目。通过哈希表、贪心策略和二维矩阵遍历等方法解决题目,并对题目难度和解题体验进行了个人评价。
摘要由CSDN通过智能技术生成

5922.统计出现过一次的公共字符串

在这里插入图片描述
好久没做双周赛了,没想到这第一场就碰到这么水的题,让我给ak了,太离谱了。

题目描述

给你两个字符串数组words1words2,请你返回在两个字符串数组中 都恰好出现一次 的字符串的数目。

示例 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 开始的字符串streetstreet中每个字符要么是表示房屋的'H',要么是表示空位的'.'

你可以在 空位 放置水桶,从相邻的房屋收集雨水。位置在i - 1或者i + 1的水桶可以收集位置为 i 处房屋的雨水。一个水桶如果相邻两个位置都有房屋,那么它可以收集 两个 房屋的雨水。

在确保每个房屋旁边都 至少 有一个水桶的前提下,请你返回需要的最少水桶数。如果无解请返回-1
示例 1:

输入:street = "H..H"
输出:2
解释:
我们可以在下标为 1 和 2 处放水桶。
"H..H" -> "HBBH"('B' 表示放置水桶)。
下标为 0 处的房屋
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值