在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。
示例:
s = "abaccdeff"
返回 "b"
s = ""
返回 " "
思路:没啥好说的,直接上哈希表就可以了。key是字符,value是出现的次数,遍历哈希表查看value是1的字符。如果存在就返回字符,否则就返回空格。这个题目有两种解法:第一种是有序的哈希表,传统上的哈希表,统计出现的次数。第二种是非传统的哈希表,它的value都是布尔值,如果第一次出现给它设为True,如果出现两次及以上那么value就是false。这个方法在评论区看到的,我觉得还蛮有意思,其实上一篇博客已经写了,但是在代码这块一会可以在解释一下。
1、整型哈希表
class Solution:
def firstUniqChar(self, s: str) -> str:
dic = {}
#遍历列表
for i in s:
if i not in dic.keys():
dic[i]=1
else:
dic[i]+=1
#检查v是不是1,如果是返回k,否则返回空格
for k,v in dic.items():
if dic[k]==1:
return k
return ' '
2、布尔哈希表
class Solution:
def firstUniqChar(self, s: str) -> str:
#和上一个几乎一样,不过这key是布尔值
dic = {}
for c in s:
dic[c] = not c in dic
for c in s:
if dic[c]: return c
return ' '