剑指 Offer 50. 第一个只出现一次的字符

题目描述

https://leetcode-cn.com/problems/di-yi-ge-zhi-chu-xian-yi-ci-de-zi-fu-lcof
在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。

示例:

s = "abaccdeff"
返回 "b"

s = ""
返回 " "

限制:

0 <= s 的长度 <= 50000

解题思路

使用哈希表存储字符串中的每一个字符的出现频次。即key为字符,value为出现次数。
创建完dict之后,遍历dict,输出第一个value等于1时候的key。如果没有value为1的key,输出' '。
注意:同时遍历value和key的方法为for key, value in count.items()而不是for key, value in count
python的三目运算符为:
max = a if a>b else b
即exp1 if contion else exp2

解题代码

class Solution:
    def firstUniqChar(self, s: str) -> str:
        if s == '':
            return ' '
        # 如果可以找到只出现一次的字符
        count = {}
        for char in s:
            count[char] = count[char] + 1 if char in count else 1
        for key, value in count.items():
            if value == 1:
                return key
        # 如果没有找到只出现一次的字符
        return ' '

执行结果

执行结果:通过
执行用时:108 ms, 在所有 Python3 提交中击败了57.50%的用户
内存消耗:15 MB, 在所有 Python3 提交中击败了69.76%的用户

版权声明:
作者:iLemonRain
链接:http://314401480.xyz/?p=279
来源:柠檬酱的blog
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>