思路:
(1)建立一个数组包含128个元素,因为字符在ASCLL表中对应的整数值最大为128,而这里只有字母表示而成,故128足够用
(2)首先初始化数组元素全为0
(3)然后遍历整个字符串,把每个字符对应的ascll整数值对应的元素出现一次就加1
(4)然后最后从字母顺序表示的顺序遍历这个数组,第一个字母出现次数为1 的为所求
class Solution {
public:
int FirstNotRepeatingChar(string str) {
int len=str.length();
if(len==0)return -1;
int hash[128]={0};//初始化数组
for( int i=0;i<len;i++)
hash[str[i]]++;//字符出现一次则相应的元素加1
for( int i=0;i<len;i++)
if( hash[str[i]]==1)
return i;
return -1;
}
};