标题形貌
给你两个字符串: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 由小写英笔墨母构成
思绪
标题要求是作一个简化版的字符串匹配,如许的题思绪很简单,之前刷 Cpp 也遇到过,总的来说是用哈希的头脑来完成,但是如今用的是 Python ,有一些语法糖可以使用。
- 我起首想到的数据布局是 字典 ,可以存储 字母 和 出现次数 的对应关系。但很快被我本身否定了,由于想起来可以使用数组的索引和数组本身存储。
- 视角切换到数组,Python 本身实在没有数组,而是叫列表,如许就多了许多可以使用的方法(固然我都不是很熟悉),比如 append() 之类的,这里可以思量构建数组,初始化接纳了array = [0] * 26,这个是 AI 写的,也是震惊到我…我一开始的思绪是用 for。
- 背面的思绪也就是哈希的使用了,存值取值,值得注意的是 Python 有一个字符转 ASCII 的函数 ord() 如许就可以方便地举行索引索取了,效果固然是通过
代码实现
Python3
- class Solution:
- def canConstruct(self, ransomNote: str, magazine: str) -> bool:
- array = [0] * 26
- for i in magazine:
- array[ord(i) - ord("a")] += 1
- for i in ransomNote:
- if array[ord(i) - ord("a")] == 0:
- return False
- array[ord(i) - ord("a")] -= 1
- return True
复制代码 时间空间服从
总结
InternStudio 上海书生大模子练习营使命一
很久没写过 Python 了…大一到如今也学了许多门语言,根本上也就是做过1~2个demo…别的什么语法的,都得用到了才去查,查了很长时间后又会忘却…这确实是一个题目,编程语言的学习确着实精而不在广,更符合的应该是通过一门语言,向导入门一个岗位(前后端、架构运维等等)…但是如今要用到,之前学过至少不消重新开始,看到 Python 代码心田也没有那么张皇…
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金 |