LeetCode--383.赎金信(哈希表)

题目描述

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

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

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

示例 1:

复制代码
输入:ransomNote = "a", magazine = "b"
输出:false

示例 2:

复制代码
输入:ransomNote = "aa", magazine = "ab"
输出:false

示例 3:

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

提示:

  • 1 <= ransomNote.length, magazine.length <= 105
  • ransomNote 和 magazine 由小写英文字母组成

代码

java 复制代码
class Solution {
    public boolean canConstruct(String ransomNote, String magazine) {
        
        // 边界条件判断
        if(ransomNote.length()>magazine.length()) return false;

        int[] result = new int [26];
        // 将字符串转化为字符数组
        char[] ransomArray = ransomNote.toCharArray();
        char[] magazineArray = magazine.toCharArray();


        for(char i : ransomArray){
            // 通过result表记录每个字符出现的次数
            result[i-'a']++;
        }

        for(char i : magazineArray){
            result[i-'a']--;
        }

        // 统计所有字符出现个数之差,若有ransom比magazine多则返回false
        for(int i : result){
            if(i>0) return false;
        }
        return true;

    }
}
相关推荐
怕浪猫3 小时前
RAG 面试 6 连问,从原理到优化全部覆盖
python·算法·面试
无线通信科研笔记3 小时前
IEEE TVT 2026 论文精读与完整复现|相位误差如何重塑近场 RIS 的幅相响应
论文阅读·人工智能·python·算法·论文笔记
daidaidaiyu4 小时前
ThingsBoard 集群的核心逻辑源码分析
java
mmmmath_34 小时前
二叉树の递归遍历
算法
All for pursuit.4 小时前
【位运算-1】338.比特位计数
数据结构·c++·算法·leetcode
我可能是个假开发5 小时前
FTP Unicode 文件名导致 `550` 的问题分析与解决方案
java·开发语言·spring
caoerzhong5 小时前
中小企业上 WMS 该先上哪几块:JeeWMS 开源 Java 仓库管理系统的分批上线清单
java·python·开源
小师兄吃牛肉5 小时前
C语言中的nullptr有必要吗
c语言·c++·算法
【JAVA】玩家6 小时前
Spring核心原理全解析:从零到生产实战
java·后端·spring
Wang's Blog6 小时前
Java框架 SpringCloud 快速入门: 实现 Feign 最佳实践(抽取方式)
java·spring cloud