前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[Java·算法·简单] LeetCode 383. 赎金信 详细解读

[Java·算法·简单] LeetCode 383. 赎金信 详细解读

作者头像
人不走空
发布2024-02-21 11:00:42
920
发布2024-02-21 11:00:42
举报
文章被收录于专栏:学习与分享

题目

给你两个字符串:ransomNotemagazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。

如果可以,返回 true ;否则返回 false

magazine 中的每个字符只能在 ransomNote 中使用一次。

示例

示例1
代码语言:javascript
复制
输入:ransomNote = "a", magazine = "b"
输出:false
示例2

代码语言:javascript
复制
输入:ransomNote = "aa", magazine = "ab"
输出:false
示例3

代码语言:javascript
复制
输入:ransomNote = "aa", magazine = "aab"
输出:true

提示

👉️ 力扣原文

代码语言:javascript
复制
class Solution {
    public boolean canConstruct(String ransomNote, String magazine) {
        HashMap<Character,Integer> magazineMap = new HashMap<>();

        for(char c : magazine.toCharArray()){
            magazineMap.put(c,magazineMap.getOrDefault(c,0)+1);
        }

        for(char c : ransomNote.toCharArray()){
            if(!magazineMap.containsKey(c) || magazineMap.get(c)==0){
                return false;
            }
            magazineMap.put(c,magazineMap.get(c) - 1);
        }
        return true;
    }
}

详细解读

这段代码是一个解决 "赎金信" 问题的 Java 方法。下面是对这段代码的详细解读:

  1. canConstruct 方法
    • 这是一个公共方法,返回一个布尔值,指示是否可以从 magazine 中的字符构建出 ransomNote。
    • 参数 ransomNote 表示赎金信,参数 magazine 表示杂志内容。
  2. 创建 HashMap
    • 在方法的开头,创建了一个 HashMap 对象 magazineMap,用于存储 magazine 中每个字符的出现次数。
  3. 遍历 magazine 字符串
    • 使用 for 循环遍历 magazine 字符串的每个字符。
    • 对于每个字符,使用 magazineMap.put(c, magazineMap.getOrDefault(c, 0) + 1); 将其添加到 magazineMap 中,如果该字符已经存在于 magazineMap 中,则将其出现次数加一;如果不存在,则将其添加到 magazineMap 中,并将出现次数设置为 1。
  4. 遍历 ransomNote 字符串
    • 使用 for 循环遍历 ransomNote 字符串的每个字符。
    • 对于每个字符,首先检查它是否存在于 magazineMap 中,如果不存在或者出现次数已经为 0,则说明无法从 magazine 中构建出 ransomNote,直接返回 false
    • 如果存在,则将其出现次数减一,表示已经使用了该字符。
  5. 返回结果
    • 如果成功遍历完 ransomNote 字符串中的所有字符,说明可以从 magazine 中构建出 ransomNote,返回 true

这段代码的核心思想是通过 HashMap 存储 magazine 中每个字符的出现次数,然后遍历 ransomNote 字符串,逐个检查其中的字符是否在 magazine 中出现,并且出现次数是否足够。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-02-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目
  • 示例
    • 示例1
      • 示例2
        • 示例3
        • 提示
        • 详细解读
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档