1.题目
在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回-1
(需要区分大小写).
2.我的题解
两个步骤:
- 第一次遍历,存储每个数值出现的次数。字符串可能很长,但字符种类很少,
char
型字符开辟256
大小的数组足够存储每个字符出现的次数了。(char
可以升型为int
) - 第二次遍历,查看当前字符出现的总数,是
1
就返回当前索引;
class Solution {
public:
int FirstNotRepeatingChar(string str) {
int cnt[256]={0};
for(int i=0;i<str.size();i++)cnt[str[i]]++;
for(int i=0;i<str.size();i++)if(cnt[str[i]]==1)return i;
return -1;
}
};