Python每日一练-----宝石与石头

Python每日一练-----宝石与石头,第1张

(day40)

目录

📝题目:

🌈in函数

🌟一行写法

🌈set集合


📝题目:

 给你一个字符串 jewels 代表石头中宝石的类型,另有一个字符串 stones 代表你拥有的石头。 stones 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。

字母区分大小写,因此 "a" 和 "A" 是不同类型的石头。

本来我是不想写这题的,因为确实是太简单了。不过我看了这题的评论后发现网友的理解高度是在是太高了。

(2018的评论)

 

真是蚌埠住了。 

我们直接给出几种解法。

🌈in函数
def numJewelsInStones(jewels, stones):
    answer = 0
    for item in stones:
        if item in jewels:
            answer += 1

    return answer

这里有个疑问就是in函数的时间复杂度是多少。查阅资料后找到in函数的时间复杂度视情况而定。

in用于列表时间复杂度为O(n)

in用于字典或者集合时间复杂度为)O(1)

🌟一行写法
def numJewelsInStones(jewels, stones):
    return sum(s in jewels for s in stones)

由上面in的时间复杂度讨论,我们可以优化代码

🌈set集合
def numJewelsInStones(jewels, stones):
    jewelsSet = set(jewels)
    return sum(s in jewelsSet for s in stones)

今天就到这,明天见。🚀

❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄end❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/787060.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-05
下一篇 2022-05-05

发表评论

登录后才能评论

评论列表(0条)

保存