python-拼写单词

拼写单词

力扣官方题解发布于 1 天前11.7k官方C++Python3哈希表字符串

方法一:哈希表记数

思路和算法

显然,对于一个单词 word,只要其中的每个字母的数量都不大于 chars 中对应的字母的数量,那么就可以用 chars 中的字母拼写出 word。所以我们只需要用一个哈希表存储 chars 中每个字母的数量,再用一个哈希表存储 word 中每个字母的数量,最后将这两个哈希表的键值对逐一进行比较即可。

  • C++
  • Python3
class Solution:
    def countCharacters(self, words: List[str], chars: str) -> int:
        chars_cnt = collections.Counter(chars)
        ans = 0
        for word in words:
            word_cnt = collections.Counter(word)
            for c in word_cnt:
                if chars_cnt[c] < word_cnt[c]:
                    break
            else:
                ans += len(word)
        return ans

复杂度分析

  • 时间复杂度:O(n)O(n),其中 nn 为所有字符串的长度和。我们需要遍历每个字符串,包括 chars 以及数组 words 中的每个单词。

  • 空间复杂度:O(S)O(S),其中 SS 为字符集大小,在本题中 SS 的值为 2626(所有字符串仅包含小写字母)。程序运行过程中,最多同时存在两个哈希表,使用的空间均不超过字符集大小 SS,因此空间复杂度为 O(S)O(S)。

下一篇:统计 Python3

 

Yuhan Huang

(编辑过)12 小时前

Python3代码中的if-else还能和for循环这么玩,难道就我一个头一回知道么~

 

doordieydoordiey

10 小时前

@Yuhan Huang effctive python 有介绍这种写法,但不提倡,会导致阅读时不够清晰。

赞踩回复

maxwell-1200💊Maxwell

9 小时前

@gelthin 学习了,正好提醒了我买了这本书还没怎么看= =

赞踩回复

zerotrac2Shuxin Chen

9 小时前

@changfei041 python 本来就有的语法为什么不能用。。。

赞踩回复

faineant_programmer在家闲逛的程序猿

7 小时前

兄弟们把理解打在公屏上

赞踩回复

a96123155a96123155

7 小时前

@Yuhan Huang 我也第一次知道……

赞踩回复

user1698Auser1698A

4 小时前

@Yuhan Huang 沃特玛也才知道还有这种骚操作

赞踩回复

infiniteftinfiniteft

3 小时前

@Yuhan Huang 其实不光for循环可以这样,try ... except .. finally 也可以这样,模式如下:

    try:
        # statement
    except Exception as e:
        # statement2
    else:
       # 如果没有Exception,就执行这里
    finally:
       # finally statement
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值