博客
关于我
剑指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/

你可能感兴趣的文章
Nginx Location配置总结
查看>>
Nginx log文件写入失败?log文件权限设置问题
查看>>
Nginx Lua install
查看>>
nginx net::ERR_ABORTED 403 (Forbidden)
查看>>
vue中处理过内存泄露处理方法
查看>>
Nginx RTMP 模块使用指南
查看>>
Nginx SSL 性能调优
查看>>
nginx ssl域名配置
查看>>
Nginx SSL私有证书自签,且反代80端口
查看>>
Nginx upstream性能优化
查看>>
Nginx 中解决跨域问题
查看>>
nginx 代理解决跨域
查看>>
Nginx 做负载均衡的几种轮询策略分析
查看>>
Nginx 入门,一篇搞定!
查看>>
Nginx 利用代理转发请求示例
查看>>
Nginx 动静分离与负载均衡的实现
查看>>
Nginx 反向代理 MinIO 及 ruoyi-vue-pro 配置 MinIO 详解
查看>>
nginx 反向代理 转发请求时,有时好有时没反应,产生原因及解决
查看>>
Nginx 反向代理+负载均衡
查看>>
Nginx 反向代理解决跨域问题
查看>>