博客
关于我
剑指offer系列-面试题50. 第一个只出现一次的字符 (python)
阅读量:533 次
发布时间:2019-03-08

本文共 841 字,大约阅读时间需要 2 分钟。

文章目录

1. 题目

在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。

2. 解题思路

使用hash表保存字符是否只出现1次,由于python3.6之后的字典都是按照插入顺序有序的,所以直接遍历,并返回满足条件的第一个即可。

3. 代码实现

3.1 哈希表

因为自python3.6开始字典其实是有序的了,所以可以直接遍历字典找到第一个只出现1次的字符。

class Solution:    def firstUniqChar(self, s: str) -> str:        """        """        record = dict.fromkeys(s, 0)        for char in s:            record[char] += 1        for k in record:            if record[k] == 1:                return k        return " "

3.2 优化

使用bool代替数字,节省空间。

class Solution:    def firstUniqChar(self, s: str) -> str:        """        2. hash法,使用bool而不是数字,能够减少更多的运算和空间        """        record = {   }        for char in s:            record[char] = char not in record        for k in record:            if record[k]:                return k        return " "

4. 总结

在算法中,熟练使用hash表能够有效帮助实现算法。

5. 参考文献

[1]

[2]
[3]

转载地址:http://ijsiz.baihongyu.com/

你可能感兴趣的文章
NetworkX:是否为每个节点添加超链接?
查看>>
network小学习
查看>>
Netwox网络工具使用详解
查看>>
Net与Flex入门
查看>>
Net任意String格式转换为DateTime类型
查看>>
net包之IPConn
查看>>
net发布的dll方法和类显示注释信息(字段说明信息)[图解]
查看>>
Net和T-sql中的日期函数操作
查看>>
Net处理html页面元素工具类(HtmlAgilityPack.dll)的使用
查看>>
Net操作Excel(终极方法NPOI)
查看>>
Net操作配置文件(Web.config|App.config)通用类
查看>>
net网络查看其参数state_dict,data,named_parameters
查看>>
Net连接mysql的公共Helper类MySqlHelper.cs带MySql.Data.dll下载
查看>>
NeurIPS(神经信息处理系统大会)-ChatGPT4o作答
查看>>
neuroph轻量级神经网络框架
查看>>
Neutron系列 : Neutron OVS OpenFlow 流表 和 L2 Population(7)
查看>>
new Blob()实现不同类型的文件下载功能
查看>>
New Concept English three (35)
查看>>
NEW DATE()之参数传递
查看>>
New Journey--工作五年所思所感小记
查看>>