【LeetCode-简单题】383. 赎金信

文章目录

题目

方法一:数组

  1. 先将magazine中的字符转换为26大小的数组中字符的数量
  2. 然后再遍历ransomNote中的字符,每遍历一个就让字符数量- 1,若字符数量<0 了 ,说明magazine的字符串不完全包含ransomNote
java 复制代码
class Solution {
    public boolean canConstruct(String ransomNote, String magazine) {
        if(ransomNote.length() > magazine.length()) return false;
          int[] mag = new int[26];

          for(char ch : magazine.toCharArray())
          mag[ch-'a']++;

          for(char sh :ransomNote.toCharArray()){
          mag[sh-'a']--;
          if( mag[sh-'a'] < 0 ) return false;
          }
          return true;
    }
}

方法二:哈希表

同理方法一

java 复制代码
class Solution {
    public boolean canConstruct(String ransomNote, String magazine) {
        if(ransomNote.length() > magazine.length()) return false;
          Map<Character,Integer> map = new HashMap<>();
          for(char s : magazine.toCharArray()){
              if(!map.containsKey(s)) map.put(s,1);
              else map.put(s,map.get(s)+1);
          }
          for(char s1 : ransomNote.toCharArray()){
              if( !map.containsKey(s1) ) return false;
               map.put(s1,map.get(s1)-1);
              if(map.get(s1) < 0) return false;
          }
          return true;
    }
}
相关推荐
zbh06042 分钟前
AcWing 223. 阿九大战朱最学——扩展欧几里得算法
算法
charlie1145141913 分钟前
Linux内核深入学习(4)——内核常见的数据结构2——红黑树
linux·数据结构·学习·红黑树
chen.@-@18 分钟前
Linux 常用命令
linux
mochensage21 分钟前
2025年全国青少年信息素养大赛C++小学全年级初赛试题
开发语言·c++·算法
不愧是你呀22 分钟前
Linux利用多线程和线程同步实现一个简单的聊天服务器
linux·服务器
liulangrenaaa39 分钟前
C语言实现android/linux按键模拟
android·linux·c语言
理论最高的吻1 小时前
HJ10 字符个数统计【牛客网】
c++·算法·散列表
仙人掌_lz1 小时前
深入理解蒙特卡洛树搜索(MCTS):python从零实现
人工智能·python·算法·ai·强化学习·rl·mcts
平和男人杨争争1 小时前
山东大学计算机图形学期末复习11——CG13上
算法·图形渲染
代码小将1 小时前
Leetcode134加油站
笔记·算法