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的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode刷题100天—383. 赎金信(字符串)—day27

LeetCode 383 赎金信

LeetCode 383. 赎金信

LeetCode:383. 赎金信————简单

每日leetcode-数组-383. 赎金信

LeetCode 383. 赎金信 / 372. 超级次方 / 1816. 截断句子