剑指offer(19)-第一个只出现一次的字符
2017-01-16 18:11
399 查看
题目:在一个字符串(1<=字符串长度<=10000,全部由大写字母组成)中找到第一个只出现一次的字符,并返回它的位置.
思路:暴力法很容易想到,复杂度为O(n^2),一种巧妙的方法是把字符看成是整数,将它ASCII码值作为索引记录字符出现的次数,类似与计数排序的思想。返回第一次出现的频数为1的字符对应索引即可。
思路:暴力法很容易想到,复杂度为O(n^2),一种巧妙的方法是把字符看成是整数,将它ASCII码值作为索引记录字符出现的次数,类似与计数排序的思想。返回第一次出现的频数为1的字符对应索引即可。
class Solution { public: int FirstNotRepeatingChar(string str) { if (str.size() == 0) return -1; const int tablesize = 256; unsigned int hashTable[tablesize]; int length = str.size(); for (int i = 0;i < tablesize;++i) hashTable[i] = 0; int count = 0; string pHashKey = str; while (str[count] != '\0') { hashTable[pHashKey[count]]++; count++; } pHashKey = str; count = 0; while (str[count] != '\0') { if (hashTable[pHashKey[count]] == 1) return count; count++; } return -1; } };
相关文章推荐
- 《剑指Offer》面试题:找到第一个只出现一次的字符
- 剑指offer_第一个只出现一次的字符
- 剑指Offer系列-面试题35:第一个只出现一次的字符
- 剑指offer 第一个只出现一次的字符
- 剑指Offer(java版):第一个只出现一次的字符
- 剑指Offer——(34)第一个只出现一次的字符位置
- 剑指offer-面试题35-第一个只出现一次的字符
- 剑指offer面试题目:第一个只出现一次的字符
- 《剑指offer》-找出字符流中第一个只出现一次的字符
- 字符串中第一个只出现一次的字符——剑指offer面试题40
- 剑指Offer(56)第一个只出现一次的字符
- 剑指Offer:第一个只出现一次的字符
- 剑指offer系列之33:第一个只出现一次的字符
- 剑指offer:第一个只出现一次的字符位置
- 剑指offer_第一个只出现一次的字符
- 《剑指offer》-找到字符串中第一个只出现一次的字符,并返回它的位置
- [剑指Offer]第一个只出现一次的字符
- 《剑指offer》——第一个只出现一次的字符
- 剑指Offer------第一个只出现一次的字符
- 剑指offer(三十八)之第一个只出现一次的字符位置