链接: 原文链接.
class Solution: # 个人写法,使用字典来记录字符出现的次数。 # def firstUniqChar(self, s: str) -> str: # # 注意空值的情况 # # 注意字符都不是只出现一次的情况 # # 方法:keys()、values() # dic = {} # if s: # for i in range(len(s)): # if s[i] not in dic: # dic[s[i]] = 1 # else: # dic[s[i]] += 1 # for key,value in dic.items(): # if value == 1: # return key # # 如果没有value等于1的,就说明字符出现的次数都大于等于2 # return ' ' # else: # return ' ' # 大佬的写法,使用哈希表(python中的字典就是建立在哈希表上的) # 遍历字符串 s ,使用哈希表统计 “各字符数量是否 >1 ”。 # 再遍历字符串 s ,在哈希表中找到首个 “数量为 11 的字符”,并返回。 # 显然,使用哈希表的执行用时更短,效率更高。 def firstUniqChar(self, s: str) -> str: dic = {} for c in s: dic[c] = not c in dic # 上边的for循环结束后,字典内存放的是{'l': True, 'e': False, 't': True, 'c': True, # 'o': True, 'd': True},只出现一次的为True。 for c in s: if dic[c]: return c return ' '