当前位置: 首页 > backend >正文

20-算法打卡-哈希表-赎金信-leetcode(383)-第二十天

1 题目地址

383. 赎金信 - 力扣(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 由小写英文字母组成 https://leetcode.cn/problems/ransom-note/description/


2 题目说明

给你两个字符串: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 由小写英文字母组成


3 解题思路

方式一:使用哈希数组处理
其实就是判断magazine里面的字符是否包含ransomNote 里面的所有字符
1 使用数组存放magazine的元素,索引下标对应元素相对值,值存放个数
2 遍历ransomNote
 ,查询数组对应位置是否有,有则减一,无则直接返回false
方式二:暴力方式两层循环,不断去寻找,找到则移除对应位置的元素即可,无则直接返回false


4 代码编写


4.1 使用哈希-Map处理

class Solution {public boolean canConstruct(String ransomNote, String magazine) {int[] a = new int[26];for (int i=0; i<magazine.length(); i++) {int index = magazine.charAt(i) - 'a';a[index]++;}for (int i=0; i<ransomNote.length(); i++) {int index = ransomNote.charAt(i) - 'a';if (a[index] < 1) {return false;}a[index]--;}return true;}
}


 

 

http://www.xdnf.cn/news/478.html

相关文章:

  • Java反射
  • 废物九重境弱者学JS第十四天--构造函数以及常用的方法
  • VBA 调用 dll 优化执行效率
  • YOLO拓展-锚框(anchor box)详解
  • 基础智能体的进展与挑战第 5 章【奖励】
  • word表格批量操作——宏
  • 工业物联网安全网关 —— 安全OTA升级签名验证
  • 【计算机网络 | 第二篇】常见的通信协议(一)
  • Jetson Orin NX 部署YOLOv12笔记
  • 学生成绩统计系统需求说明书
  • 180-《商陆》
  • 基于medusa范式的大模型并行解码推理加速初探
  • sql之DML(insert、delete、truncate、update、replace))
  • Vue组件深度封装:从复用艺术到架构思维
  • P1113 杂务-拓扑排序
  • 【网络编程】TCP数据流套接字编程
  • Cypress EZ-USB CX3 适配输出imx586相机
  • 100KNTC阻值表
  • CTF--秋名山车神
  • 【Test】function 包装器 和 bind 包装器的使用
  • 软件测试:静态测试与动态测试的全面解析
  • 大模型Rag - 如何评估Rag
  • SpringBoot启动后初始化的几种方式
  • P1042【深基8,例1】乒乓球
  • C++手撕STL-其二
  • Pandas取代Excel?
  • MCGS昆仑通太屏笔记
  • 【java实现+4种变体完整例子】排序算法中【归并排序】的详细解析,包含基础实现、常见变体的完整代码示例,以及各变体的对比表格
  • 【ELF2学习板】利用OpenMP采用多核并行技术提升FFTW的性能
  • 科学研究:怎么做