Leetcode刷题100天—383. 赎金信(字符串)—day27
Posted 神的孩子都在歌唱
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode刷题100天—383. 赎金信(字符串)—day27相关的知识,希望对你有一定的参考价值。
前言:
作者:神的孩子在歌唱
大家好,我叫运智
383. 赎金信
难度简单177收藏分享切换为英文接收动态反馈
给定一个赎金信 (ransom
) 字符串和一个杂志(magazine
)字符串,判断第一个字符串 ransom
能不能由第二个字符串 magazines
里面的字符构成。如果可以构成,返回 true
;否则返回 false
。
(题目说明:为了不暴露赎金信字迹,要从杂志上搜索各个需要的字母,组成单词来表达意思。杂志字符串中的每个字符只能在赎金信字符串中使用一次。)
示例 1:
输入:ransomNote = "a", magazine = "b"
输出:false
示例 2:
输入:ransomNote = "aa", magazine = "ab"
输出:false
示例 3:
输入:ransomNote = "aa", magazine = "aab"
输出:true
提示:
- 你可以假设两个字符串均只含有小写字母。
package 字符串;
import java.util.HashMap;
public class _383_赎金信 {
// 先将ransom里面的字符串存入哈希,在遍历magazine杂志里面字符串,如果匹配且值为0就移除,直到哈希为空
public boolean canConstruct(String ransomNote, String magazine) {
// 定义哈希映射
HashMap<Character, Integer> map=new HashMap<>();
// 通过遍历将字符存入哈希中
for(int i=0;i<ransomNote.length();i++) {
char c=ransomNote.charAt(i);
map.put(c, map.getOrDefault(c, 0)+1);
}
// 在遍历magazine杂志里面字符串,如果匹配且值为0就移除,直到哈希为空
for(int i=0;i<magazine.length();i++) {
char c=magazine.charAt(i);
if (map.containsKey(c)) {
map.put(c, map.getOrDefault(c, 0)-1);
// 如果该键的值小于等于0就移除
if (map.get(c)<=0) {
map.remove(c);
}
}
if (map.isEmpty()) {
return true;
}
}
return false;
}
}
本人csdn博客:https://blog.csdn.net/weixin_46654114
转载说明:跟我说明,务必注明来源,附带本人博客连接。
以上是关于Leetcode刷题100天—383. 赎金信(字符串)—day27的主要内容,如果未能解决你的问题,请参考以下文章