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

你可能感兴趣的文章
No static resource favicon.ico.
查看>>
no such file or directory AndroidManifest.xml
查看>>
No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android
查看>>
NO.23 ZenTaoPHP目录结构
查看>>
no1
查看>>
NO32 网络层次及OSI7层模型--TCP三次握手四次断开--子网划分
查看>>
NOAA(美国海洋和大气管理局)气象数据获取与POI点数据获取
查看>>
NoClassDefFoundError: org/springframework/boot/context/properties/ConfigurationBeanFactoryMetadata
查看>>
node
查看>>
node exporter完整版
查看>>
node HelloWorld入门篇
查看>>
Node JS: < 一> 初识Node JS
查看>>
Node JS: < 二> Node JS例子解析
查看>>
Node Sass does not yet support your current environment: Linux 64-bit with Unsupported runtime(93)解决
查看>>
Node Sass does not yet support your current environment: Windows 64-bit with Unsupported runtime(72)
查看>>
Node 裁切图片的方法
查看>>
node+express+mysql 实现登陆注册
查看>>
Node+Express连接mysql实现增删改查
查看>>
node, nvm, npm,pnpm,以前简单的前端环境为什么越来越复杂
查看>>
Node-RED中Button按钮组件和TextInput文字输入组件的使用
查看>>