#字符串中的第一个唯一字符
##给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。
示例:
s = “leetcode”
返回 0
s = “loveleetcode”
返回 2
提示:你可以假定该字符串只包含小写字母。[^1]
代码1:
# -*- coding: utf-8 -*-
#!/usr/bin/env python
"""
@author: WowlNAN
@github: https://github.com/WowlNAN
@blog: https://blog.csdn.net/qq_21264377
"""
class Solution:
def firstUniqChar(self, s: str) -> int:
dic={}
for w in s:
if dic.get(w, -1)==-1:
dic[w]=1
else:
if dic.get(w,-1)==1:
dic[w]=0
for key, value in dic.items():
if value==1:
return s.find(key)
return -1
使用字典标注单个字符的出现次数,获取该字典中第一个出现次数等于1的key,在字符串中查找到的位置即是解。
代码2:
# -*- coding: utf-8 -*-
#!/usr/bin/env python
"""
@author: WowlNAN
@github: https://github.com/WowlNAN
@blog: https://blog.csdn.net/qq_21264377
"""
class Solution:
def firstUniqChar(self, s: str) -> int:
a=list(set(s))
b=len(s)
for c in a:
d=s.find(c)
if -1!=d and d==s.rfind(c):
#b=min(b,d)
if b>d:
b=d
if b==len(s):
b=-1
return b
从s中挑取所有出现过的字符组成不重复的字符数组。从左往右查找到的位置与从右往左查找到的位置相等即是出现次数为1的字符。从该数组中比较得出出现位置最小的出现次数为1的字符。
[^1]*题目来源:力扣(LeetCode)