我是靠谱客的博主 乐观老师,最近开发中收集的这篇文章主要介绍力扣每日一题(三),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

仅以此纪录每日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)

最后

以上就是乐观老师为你收集整理的力扣每日一题(三)的全部内容,希望文章能够帮你解决力扣每日一题(三)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部