241119.LeetCode——383.赎金信

[复制链接]
发表于 2025-12-23 15:27:07 | 显示全部楼层 |阅读模式
标题形貌

给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 内里的字符构成。
假如可以,返回 true ;否则返回 false 。
magazine 中的每个字符只能在 ransomNote 中使用一次。
示例 1:
  1. 输入:ransomNote = "a", magazine = "b"
  2. 输出:false
复制代码
示例 2:
  1. 输入:ransomNote = "aa", magazine = "ab"
  2. 输出:false
复制代码
示例 3:
  1. 输入:ransomNote = "aa", magazine = "aab"
  2. 输出:true
复制代码
提示:

● 1 <= ransomNote.length, magazine.length <= 105
● ransomNote 和 magazine 由小写英笔墨母构成
思绪

标题要求是作一个简化版的字符串匹配,如许的题思绪很简单,之前刷 Cpp 也遇到过,总的来说是用哈希的头脑来完成,但是如今用的是 Python ,有一些语法糖可以使用。

  • 我起首想到的数据布局是 字典 ,可以存储 字母 和 出现次数 的对应关系。但很快被我本身否定了,由于想起来可以使用数组的索引和数组本身存储
  • 视角切换到数组,Python 本身实在没有数组,而是叫列表,如许就多了许多可以使用的方法(固然我都不是很熟悉),比如 append() 之类的,这里可以思量构建数组,初始化接纳了array = [0] * 26,这个是 AI 写的,也是震惊到我…我一开始的思绪是用 for。
  • 背面的思绪也就是哈希的使用了,存值取值,值得注意的是 Python 有一个字符转 ASCII 的函数 ord() 如许就可以方便地举行索引索取了,效果固然是通过
代码实现

Python3
  1. class Solution:
  2.     def canConstruct(self, ransomNote: str, magazine: str) -> bool:
  3.         array = [0] * 26
  4.         for i in magazine:
  5.             array[ord(i) - ord("a")] += 1
  6.         for i in ransomNote:
  7.             if array[ord(i) - ord("a")] == 0:
  8.                 return False
  9.             array[ord(i) - ord("a")] -= 1
  10.         return True
复制代码
时间空间服从


总结

InternStudio 上海书生大模子练习营使命一
很久没写过 Python 了…大一到如今也学了许多门语言,根本上也就是做过1~2个demo…别的什么语法的,都得用到了才去查,查了很长时间后又会忘却…这确实是一个题目,编程语言的学习确着实精而不在广,更符合的应该是通过一门语言,向导入门一个岗位(前后端、架构运维等等)…但是如今要用到,之前学过至少不消重新开始,看到 Python 代码心田也没有那么张皇…

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表