和出现次数有关的,不要犹豫,hash 具体思路:首先用字典统计每个字符出现的频率,然后顺序遍历字符串,并在字典中进行查找,出现频率为 1,返回。 时间复杂度 O (n), 空间复杂度 O (n)
1 2 3 4 5 6 7 8 9 10 11 12 13
deffirstUniqChar(self, s: str) -> int: #字典存储字符频率 dic = dict() for i in s: if i in dic: dic[i] = dic[i] + 1 else: dic[i] = 1 #顺序查找 for i in range(len(s)): if dic[s[i]] == 1: return i return-1