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.

原文地址:https://www.cnblogs.com/vvzhang/p/13803138.html