题目:
给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。
案例:
s = “leetcode”
返回 0.
s = “loveleetcode”,
返回 2.
注意事项:您可以假定该字符串只包含小写字母。
答案:
class Solution:
def firstUniqChar(self, s: str) -> int:
List1={}
List2=[]
if s:
for i in s:
if i not in List1:
List1[i]=0
List2.append(i)
else:
# List1.append(i)
try:
List2.remove(i)
except:
pass
if List2:
return s.index(List2[0])
else:
return -1
else:
return -1
别的人写的简化代码:
class Solution:
def firstUniqChar(self, s: str) -> int:
# 对每个出现的字母计数
s_counter = collections.Counter(s)
# 找到只出现一次的最靠前的那个字母,找不到就返回-1
for i in range(len(s)):
if s_counter[s[i]] <= 1:
return i
else:
return -1
疑问?
明明我只遍历了一遍,他遍历了两边,但是是他的速度更快,效果更好