概述
仅以此纪录每日LeetCode所刷题目
题目描述:
示例:
思路:
这道题是一道查找问题,查找问题非常适合使用哈希表。我的做法是使用两个循环,第一个循环将magazine中的字母存到哈希表中。第二个循环判断哈希表中的字母是否充裕,若遇到ransomNote中的字母不在哈希表中,或者该字母所对应的value值为0(已经用完),则返回False。循环如果能正常结束,则代表满足条件,返回True。
代码:
class Solution:
def canConstruct(self, ransomNote: str, magazine: str) -> bool:
m_dict = {}
for i in range(len(magazine)):
if magazine[i] in m_dict:
m_dict[magazine[i]] +=1
else:
m_dict[magazine[i]] = 1
for i in range(len(ransomNote)):
if ransomNote[i] in m_dict:
if m_dict[ransomNote[i]] == 0:
return False
m_dict[ransomNote[i]] -= 1
else:
return False
return True
更简单的方法就是利用Pyhon的collect.counter函数,和哈希表大体相似,但是代码数量很少。
class Solution:
def canConstruct(self, ransomNote: str, magazine: str) -> bool:
if len(ransomNote) > len(magazine):
return False
return not collections.Counter(ransomNote) - collections.Counter(magazine)
最后
以上就是乐观老师为你收集整理的力扣每日一题(三)的全部内容,希望文章能够帮你解决力扣每日一题(三)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复