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

你可能感兴趣的文章
mysql配置读写分离并在若依框架使用读写分离
查看>>
MySQL里为什么会建议不要使用SELECT *?
查看>>
MySQL里的那些日志们
查看>>
MySQL锁
查看>>
MySQL锁与脏读、不可重复读、幻读详解
查看>>
MySQL锁机制
查看>>
mysql锁机制,主从复制
查看>>
Mysql锁机制,行锁表锁
查看>>
MySQL锁表问题排查
查看>>
Mysql锁(2):表级锁
查看>>
MySQL锁,锁的到底是什么?
查看>>
Mysql错误2003 -Can't connect toMySQL server on 'localhost'(10061)解决办法
查看>>
MySQL错误提示mysql Statement violates GTID consistency
查看>>
mysql错误:This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its de
查看>>
mysql长事务
查看>>
mysql问题记录
查看>>
MySQL集群解决方案(1):MySQL数据库的集群方案
查看>>
MySQL集群解决方案(4):负载均衡
查看>>
MySQL集群解决方案(5):PXC集群
查看>>
MySQL面试宝典
查看>>