剑指 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 ' '
相关文章
|
2月前
|
存储 搜索推荐 C++
剑指 Offer(第 2 版)刷题 | 03. 数组中重复的数字
本文是作者针对《剑指 Offer(第 2 版)》中 "数组中重复的数字" 问题的刷题记录,分享了使用排序算法和相邻比较大小两种方法来找出数组中的重复数字,并提供了C++的实现代码。
剑指 Offer(第 2 版)刷题 | 03. 数组中重复的数字
|
6月前
剑指 Offer 50:第一个只出现一次的字符
剑指 Offer 50:第一个只出现一次的字符
35 0
|
6月前
剑指 Offer 03:数组中重复的数字
剑指 Offer 03:数组中重复的数字
27 0
|
6月前
剑指 Offer 38:字符串的排列
剑指 Offer 38:字符串的排列
47 0
|
6月前
剑指 Offer 20:表示数值的字符串
剑指 Offer 20:表示数值的字符串
42 0
|
6月前
剑指 Offer 56 - I:数组中数字出现的次数
剑指 Offer 56 - I:数组中数字出现的次数
48 0
|
6月前
剑指 Offer 56 - II:数组中数字出现的次数 II
剑指 Offer 56 - II:数组中数字出现的次数 II
48 0
|
6月前
剑指 Offer 53 - I:在排序数组中查找数字 I
剑指 Offer 53 - I:在排序数组中查找数字 I
38 0
|
存储
图解LeetCode——剑指 Offer 50. 第一个只出现一次的字符
图解LeetCode——剑指 Offer 50. 第一个只出现一次的字符
73 0