第一个只出现一次的字符

Posted Lucky&

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第一个只出现一次的字符相关的知识,希望对你有一定的参考价值。

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

思路1:

利用数组模拟哈希,将字符转化为整数(字符-0) (计算ascii)
将每个字符转换为数字,作为数组的下标,值为出现的次数
第一次遍历统计次数,
第二次遍历判断是否为1,是的话返回

 1 class Solution {
 2 public:
 3     int FirstNotRepeatingChar(string str) {
 4 //        vector<int> vec(300,0);
 5         int len = str.size();
 6         if (len <= 0)
 7             return -1;
 8         vector<int> vec(300,0);
 9         int i;
10         for(i = 0;i < len; i++)
11         {
12             vec[str[i]-0]++;
13         }
14         for(i = 0; i < len; i++)
15         {
16             if (vec[str[i]-0] == 1)
17                 return i;
18         }
19         return -1;
20     }
21 };

第二种:直接用,map容器

 1 class Solution {
 2 public:
 3     int FirstNotRepeatingChar(string str) {
 4         int len = str.size();
 5         if (len <= 0)
 6             return -1;
 7         map<char, int> map1;
 8         int i;
 9         for(i = 0; i< len; i++)
10         {
11             map1[str[i]]++;
12         }
13         for(i = 0; i < len; i++)
14         {
15             if(map1[str[i]] == 1)
16                 return i;
17         }
18         return -1;
19     }
20 };

 

以上是关于第一个只出现一次的字符的主要内容,如果未能解决你的问题,请参考以下文章

《剑指Offer——字符串中第一个只出现一次的字符》代码

剑指offer第一个只出现一次的字符

剑指Offer-第一个只出现一次的字符位置

C++信奥赛题目——第一个只出现一次的值

第一个只出现一次的字符

第一个只出现一次的字符