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

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

链接: 原文链接.


class Solution:
    # 个人写法,使用字典来记录字符出现的次数。
    # def firstUniqChar(self, s: str) -> str:
    #     # 注意空值的情况
    #     # 注意字符都不是只出现一次的情况
    #     # 方法:keys()、values()
    #     dic = {}
    #     if s:
    #         for i in range(len(s)):
    #             if s[i] not in dic:
    #                 dic[s[i]] = 1
    #             else:
    #                 dic[s[i]] += 1
    #         for key,value in dic.items():
    #             if value == 1:
    #                 return key
    #         # 如果没有value等于1的,就说明字符出现的次数都大于等于2
    #         return ' '
    #     else:
    #         return ' '
    # 大佬的写法,使用哈希表(python中的字典就是建立在哈希表上的)
    # 遍历字符串 s ,使用哈希表统计 “各字符数量是否 >1 ”。
    # 再遍历字符串 s ,在哈希表中找到首个 “数量为 11 的字符”,并返回。
    # 显然,使用哈希表的执行用时更短,效率更高。
    def firstUniqChar(self, s: str) -> str:
        dic = {}
        for c in s:
            dic[c] = not c in dic
        # 上边的for循环结束后,字典内存放的是{'l': True, 'e': False, 't': True, 'c': True, 
        # 'o': True,  'd': True},只出现一次的为True。
        for c in s:
            if dic[c]: return c
        return ' '
相关文章
|
3天前
剑指 Offer 50:第一个只出现一次的字符
剑指 Offer 50:第一个只出现一次的字符
20 0
|
3天前
剑指 Offer 03:数组中重复的数字
剑指 Offer 03:数组中重复的数字
13 0
|
3天前
剑指 Offer 38:字符串的排列
剑指 Offer 38:字符串的排列
23 0
|
3天前
剑指 Offer 20:表示数值的字符串
剑指 Offer 20:表示数值的字符串
27 0
|
3天前
剑指 Offer 53 - I:在排序数组中查找数字 I
剑指 Offer 53 - I:在排序数组中查找数字 I
23 0
|
3天前
|
索引
剑指 Offer 48:最长不含重复字符的子字符串
剑指 Offer 48:最长不含重复字符的子字符串
19 0
|
3天前
剑指 Offer 56 - II:数组中数字出现的次数 II
剑指 Offer 56 - II:数组中数字出现的次数 II
22 0
|
3天前
剑指 Offer 56 - I:数组中数字出现的次数
剑指 Offer 56 - I:数组中数字出现的次数
19 0
|
存储
图解LeetCode——剑指 Offer 50. 第一个只出现一次的字符
图解LeetCode——剑指 Offer 50. 第一个只出现一次的字符
56 0