剑指offer——寻找字符串中只出现一次的第一个字符位置
2018-02-19 13:24
309 查看
题目:在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置
解:像这类题都可以归结为计算字符在字符串中的个数问题,高效的方法是使用哈希,将字符映射为数字(可以利用ASCII映射);具体步骤如下
A、开辟一个数组长度256,因为字符也就是8个位
B、循环字符串一次,就可以得到每个字符出现次数,那么如果才能知道那个只出现一次的字符是第一次出现?
C、再对字符串遍历一次,按顺序找,如果次数是1那就是满足题目要求的下标!
解:像这类题都可以归结为计算字符在字符串中的个数问题,高效的方法是使用哈希,将字符映射为数字(可以利用ASCII映射);具体步骤如下
A、开辟一个数组长度256,因为字符也就是8个位
B、循环字符串一次,就可以得到每个字符出现次数,那么如果才能知道那个只出现一次的字符是第一次出现?
C、再对字符串遍历一次,按顺序找,如果次数是1那就是满足题目要求的下标!
int FirstNotRepeatingChar(string str) { int count_num[256] = { 0 };//用一个数组来存放每个字符出现的次数,ASCLL值 for (int i = 0; str[i]; i++){ count_num[str[i]]++; } for (int i = 0; str[i]; i++){//这里还要注意细节问题就是可能没有只出现一次的字符 if (count_num[str[i]] == 1) return i; } return -1;//这个就是解决字符串为空以及没有只出现一次的字符! }
相关文章推荐
- 《剑指offer》-找到字符串中第一个只出现一次的字符,并返回它的位置
- 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置
- 寻找字符串中只出现一次的第一个字符
- 14.字符串hash寻找第一个只出现一次的字符
- (剑指offer)丑数 寻找第一个只出现一次的字符
- 剑指Offer - 第一个只出现一次的字符位置
- JAVA实现 剑指offer—求字符串中第一个只出现一次的字符
- 剑指offer:第一个只出现一次的字符位置
- 第一个 只出现一次的字符 位置(剑指offer)+哈希
- 【剑指Offer-时间效率平衡】在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置
- 在一个字符串(1<=字符串长度<=10000,全部由大小写字母组成)中找到第一个只出现一次的字符,并返回它的位置
- 《剑指offer》——第一个只出现一次的字符位置
- 在一个字符串(1<=字符串长度<=10000,全部由大写字母组成)中找到第一个只出现一次的字符,并返回它的位置
- 剑指offer 面试题35 字符串中第一个出现一次的字符
- 《剑指offer》第一个只出现一次的字符位置
- 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置
- 剑指offer题解 第一个只出现一次的字符位置
- 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置
- 找出字符串中第一个只出现过一次的字符和位置
- 寻找字符串中第一个仅仅出现一次打字符