LeetCode383. 赎金信
题目描述:
给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。
如果可以,返回 true ;否则返回 false 。
magazine 中的每个字符只能在 ransomNote 中使用一次。
示例 1:
1 2 | 输入:ransomNote = "a" , magazine = "b" 输出: false |
示例 2:
1 2 | 输入:ransomNote = "aa" , magazine = "ab" 输出: false |
示例 3:
输入:ransomNote = "aa", magazine = "aab" 输出:true
提示:
• 1 <= ransomNote.length, magazine.length <= 105
• ransomNote 和 magazine 由小写英文字母组成
思路:
因为题目所只有小写字母,那可以采用空间换取时间的哈希策略, 用一个长度为26的数组还记录magazine里字母出现的次数。
然后再用ransomNote去验证这个数组是否包含了ransomNote所需要的所有字母。
是数组在哈希法中的应用。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | class Solution { public boolean canConstruct(String ransomNote, String magazine) { // 定义一个哈希映射数组 int [] record = new int [ 26 ]; // 遍历 for ( char c : magazine.toCharArray()){ record[c - 'a' ] += 1 ; } for ( char c : ransomNote.toCharArray()){ record[c - 'a' ] -= 1 ; } // 如果数组中存在负数,说明ransomNote字符串总存在magazine中没有的字符 for ( int i : record){ if (i < 0 ){ return false ; } } return true ; } } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构