博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
剑指offer:第一个只出现一次的字符
阅读量:6435 次
发布时间:2019-06-23

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

昨天为了准备一个面试,进度没跟上,今天补上。

 

题目描述:

在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).

 

解题思路:

一开始就只能想到暴力来做,不过复杂度就是O(n^2)。

思路二:用哈希表来存每一个字符出现的次数,那就只要遍历字符串两次,第一次存每个字符出现的次数,第二次就从头开始找到出现次数为1的对应字符的位置。这样复杂度就是O(n)。哈希表考虑到题目说了只包含大小写字母,就只写用一个128长度的数组,把字母的ascii码映射到数组位置就可以。

 

代码:

class Solution {public:    int FirstNotRepeatingChar(string str) {        if(str.size() == 0)            return -1;        int hash[128] = {
0}; for(int i=0; i

 

转载于:https://www.cnblogs.com/LJ-LJ/p/10617573.html

你可能感兴趣的文章
kali安装软件遇到的问题&解决
查看>>
oracle的增量检查点与block buffer
查看>>
python 中关于logging 日志的输出设定
查看>>
Flutter 构建完整应用手册-持久化
查看>>
Linux安装软件目录选择
查看>>
php模式设计之 工厂模式
查看>>
Smart-git的安装使用
查看>>
HTTP强制浏览器下载文件
查看>>
Linux基础(day3)
查看>>
NGUI v301 官方详解 Example 2 - Interaction
查看>>
Centos7配置JAVA_HOME
查看>>
003# ADempiere系统简介(二)
查看>>
利用 squid 反向代理提高网站性能
查看>>
协变&逆变
查看>>
glide 与 SubsamplingScaleImageView 结合使用
查看>>
JVM 类加载机制
查看>>
乐享快捷支付背后银行业IT架构新思考
查看>>
系统设计之负载平衡介绍
查看>>
GUID全球唯一ID
查看>>
DayOfWeek
查看>>