题目
给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。
案例:
s = "leetcode"
返回 0.
s = "loveleetcode",
返回 2.
solution_1
思路:把字符串变为list,遍历list,用字典统计每个字符出现的次数,并依次把字符存入一个列表中,当一个字符第二次出现时,就从列表中删除该字符。遍历完之后,列表中剩下的字符就是字符串中的唯一字符,第一个元素就是字符串中的第一个唯一字符。
结果:执行用时:64 ms
排名:战胜94.47%
代码如下
class Solution(object):
def firstUniqChar(self, s):
"""
:type s: str
:rtype: int
"""
sl = list(s) # 字符串变为list
dic_s = {} # 记录每个字符出现的次数
list_s = [] # 储存出现一次的字符
for i in sl:
if i not in dic_s:
list_s.append(i)
dic_s[i] = 1
elif dic_s[i] == 1: # 删除重复出现的字符
list_s.pop(list_s.index(i))
dic_s[i] += 1
else:
pass
if len(list_s) == 0: # 空字符
return -1
else:
return sl.index(list_s[0])