面试题35_第一个只出现一次的字符
2015-07-31 09:41
260 查看
题目描述
在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符的位置。若为空串,返回-1。解题思路
思路一:暴力解法,双重循环,依次判断每个字符出现的次数,直到找到第一个只出现一次的字符。时间复杂度O(n^2)。思路二:利用hash表来存储每个元素出现的次数,时间O(n) ,空间O(1)
实现代码
class Solution { public: int FirstNotRepeatingChar(string str) { if(str.empty()) return -1; int len = str.size(); char* hashtb = new char[256]; for(int i=0; i<256;i++) hashtb[i] = 0; int index = -1; char value = 0; for(int i=0; i<len; i++) hashtb[str[i]]++; for(int i=0; i<len;i++) { if( hashtb[str[i]] == 1) { index = i; break; } } return index; } };
相关文章推荐
- 面试题34_丑数
- 程序员的恋情
- 程序员如何写好技术简历 —— 实例、模板及工具
- 笔试面试
- 剑指Offer面试题11(Java版):数值的整数次方
- 浅谈IT路的职业规划
- 一个老程序员的十年回顾
- 【LeetCode-面试算法经典-Java实现】【059-Spiral Matrix II(螺旋矩阵II)】
- 【LeetCode-面试算法经典-Java实现】【058-Length of Last Word (最后一个单词的长度)】
- 【LeetCode-面试算法经典-Java实现】【057-Insert Interval(插入区间)】
- 黑马程序员----JAVA基础----函数与数组及多线程2
- 黑马程序员——comparator和comparable接口的异同(简述)
- 黑马程序员——collection的Set集合
- 黑马程序员——迷宫游戏初步的实现及思路
- 如何避免新入职的程序员痛苦和迷茫?
- 32种谷歌浏览器插件,程序员的福音
- 10分钟的学习,改变你的程序员生涯
- 枯燥的程序员生活——自己编写的一首歌曲
- 黑马程序员-关于IO的学习
- PHP程序员的职业规划,走进PHP后端工程师的世界