题目描述:
给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。
案例:
s = “leetcode”
返回 0.
s = “loveleetcode”,
返回 2.
解题思路:
遍历一遍字符串,将每一个字符出现的次数与该字符放入字典中,
再次遍历字符串,找到第一个次数为1的字符返回其索引
p.s.由于字典是无序的,所以第二遍要枚举字符串而不是字典中第一个次数为1的字符
class Solution(object):
def firstUniqChar(self, s):
"""
:type s: str
:rtype: int
"""
rr=-1
res={}
for i in s:
if i in res:
res[i]+=1
else:
res[i]=1
for i in s:
if res[i]==1:
return s.index(i)
return -1
p.s.
别人的做法
find()找到字符第一次出现的索引,rfind()找到字符最后一次出现的索引,如果这两个值相等且不等于-1说明该字符只出现一次,将所有只出现一次的字母索引放入列表中,返回其中的最小值
alpha='qwertyuiopasdfghjklzxcvbnm'
s=[s.find(i) for i in alpha if s.find(i)==s.rfind(i) and s.find(i)!=-1]
return min(s) if s else -1