☀(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)
这里有个疑问就是in函数的时间复杂度是多少。查阅资料后找到in函数的时间复杂度视情况而定。
in用于列表时间复杂度为O(n)
in用于字典或者集合时间复杂度为)O(1)
def numJewelsInStones(jewels, stones):
return sum(s in jewels for s in stones)
set集合由上面in的时间复杂度讨论,我们可以优化代码
def numJewelsInStones(jewels, stones):
jewelsSet = set(jewels)
return sum(s in jewelsSet for s in stones)
今天就到这,明天见。
❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄end❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄



