LeetCode 387_ 字符串中的第一个唯一字符
1. 题目描述
2. 代码
1 import collections 2 3 class Solution: 4 def firstUniqChar(self, s: str) -> int: 5 dic = collections.OrderedDict()#有序字典 6 for i in range(len(s)):#遍历字符串 7 c = s[i]#当前字符 8 if c not in dic:#第一次出现,key是字符,value是一个二元组[字符频率,字符索引] 9 dic[c] = [1,i] 10 else: 11 dic[c][0] += 1#出现多次,key是字符,value二元组修改,字符频率+1 12 # dic[c][1] = -1#字符索设定为-1,表示此字符不符合题目要求 13 for _,v in dic.items():#dic有序 14 # print(dic.items()) 15 if v[0] == 1:#字符出现了一次 16 return v[1]#返回对应的索引 17 return -1
思路: 先定义一个有序字典dic, 然后遍历字符串s, 把字符和该字符出现的 [次数, 索引]存入字典中, 然后遍历字典, 找到次数为1的字符, 返回该字符的索引.
3. Python中collections模块, 可看LeetCode 350.