【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;
    }
}
相关推荐
博语小屋2 小时前
设计一个简单的网络计算器并将其守护进程化
linux·网络·tcp/ip
星火开发设计2 小时前
枚举类 enum class:强类型枚举的优势
linux·开发语言·c++·学习·算法·知识
喜欢吃燃面7 小时前
Linux:环境变量
linux·开发语言·学习
嘴贱欠吻!7 小时前
Flutter鸿蒙开发指南(七):轮播图搜索框和导航栏
算法·flutter·图搜索算法
张祥6422889047 小时前
误差理论与测量平差基础笔记十
笔记·算法·机器学习
踩坑记录7 小时前
leetcode hot100 2.两数相加 链表 medium
leetcode·链表
qq_192779878 小时前
C++模块化编程指南
开发语言·c++·算法
cici1587410 小时前
大规模MIMO系统中Alamouti预编码的QPSK复用性能MATLAB仿真
算法·matlab·预编码算法
历程里程碑10 小时前
滑动窗口---- 无重复字符的最长子串
java·数据结构·c++·python·算法·leetcode·django
佑白雪乐10 小时前
<Linux基础第10集>复习前面内容
linux·运维·服务器