剑指 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%的用户
共有 0 条评论