class Solution:
#将计数字典改为[index,cnt]这样的kv组合字典;也就是说字典的val并不一定是一个值,可以是个列表;dict[key][index]即可
def firstUniqChar(self, s: str) -> str:
d = {}
#字符串是可以当做列表遍历的
for i, c in enumerate(s):
if c in d: #在不在字典,是看这个值是不是keys,字典是key:value; dict[key]=value
d[c][1] +=1
else:
d[c] = [i,1]
res = ' '
minIndex = len(s)
for c in d:
index , cnt = d[c]
if cnt==1 and index <minIndex:
minIndex = index
res = c
return res
#字典的键必须是唯一的,但值则不必,如果有多个键重复,只记住最后一个;值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组,不能是列表
#时间复杂度O(n+c)只需遍历一遍字符串,之后遍历字典的复杂度为o(c)
#空间复杂度O(c)使用了一个字典,存c个个kv值
本题学到了2点,
①字符串是可以当做列表遍历的
②关于字典,在不在字典,是看这个值是不是keys,判断的是keys,字典是key:value; dict[key]=value