题目描述
在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).
思路:hash
A-Z对应ASCII码65-90
a-z对应ASCII码97-122
所以存储时的下标都用ASCII码减去65,一共122-65 = 58个
class Solution {
public:
int FirstNotRepeatingChar(string str) {
int c[58] = {0};
for(int i = 0;i < str.length();i++){
c[str[i]-65]++;
}
for(int i = 0;i < str.length();i++){
if(c[str[i]-65] == 1)
return i;
}
return -1;
}
};