Leetcode Link: 剑指 Offer 50. 第一个只出现一次的字符 - 力扣(LeetCode)

题目

解法一

思路: 利用哈希表,出现一次的为 True,大于一次的为 False 然后重新遍历,找第一个True

题解

class Solution:
    def firstUniqChar(self, s: str) -> str:
        dd = {}
        for c in s:
            dd[c] = c not in dd.keys()
        for c in s:
            if dd[c] == True:
                return c
        return ' '

可以使用有序字典来直接遍历字典。 有序字典指的是先输入键值对A,在输入键值对B。当遍历字典的时候,先会遍历到A,再遍历到B。

对于python3.6之前,采用如下方式创建有序字典

from collections import OrderedDict
dd = OrderedDict()

而在python3.6之后(含),默认的字典已经是有序字典了。

class Solution:
    def firstUniqChar(self, s: str) -> str:
        dd = {}
        for c in s:
            dd[c] = c not in dd.keys()
        for k, v in dd.items(): # 有序字典,按照输入顺序输出。
            if v == True:
                return k
        return ' '

启发和联系