剑指 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 ' '
相关文章
|
7月前
|
机器学习/深度学习
剑指 Offer 15:二进制中1的个数
剑指 Offer 15:二进制中1的个数
63 0
|
3月前
|
存储 搜索推荐 C++
剑指 Offer(第 2 版)刷题 | 03. 数组中重复的数字
本文是作者针对《剑指 Offer(第 2 版)》中 "数组中重复的数字" 问题的刷题记录,分享了使用排序算法和相邻比较大小两种方法来找出数组中的重复数字,并提供了C++的实现代码。
剑指 Offer(第 2 版)刷题 | 03. 数组中重复的数字
|
2月前
|
C语言
剑指 Offer 15. 二进制中1的个数
这篇文章介绍了如何通过位运算计算一个无符号整数的二进制表示中1的个数,即汉明重量,并提供了相应的C语言函数实现。
35 0
|
7月前
剑指 Offer 50:第一个只出现一次的字符
剑指 Offer 50:第一个只出现一次的字符
39 0
|
7月前
剑指 Offer 03:数组中重复的数字
剑指 Offer 03:数组中重复的数字
28 0
|
7月前
剑指 Offer 20:表示数值的字符串
剑指 Offer 20:表示数值的字符串
44 0
|
7月前
剑指 Offer 38:字符串的排列
剑指 Offer 38:字符串的排列
56 0
|
7月前
|
索引
剑指 Offer 48:最长不含重复字符的子字符串
剑指 Offer 48:最长不含重复字符的子字符串
30 0
剑指 Offer 48. 最长不含重复字符的子字符串
剑指 Offer 48. 最长不含重复字符的子字符串
56 0

热门文章

最新文章