描述
在一个长为 字符串中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).(从0开始计数)
要求:空间复杂度 O(n),时间复杂度 O(n)
输入:“google”
返回值:4
解题思路:数组
巧妙利用字母的ASCII码,使用ASCII码(对应数组的下标)表示字母,去统计字母出现的次数。
最后我们只需要遍历一遍字符串,找到那个只出现一次的字符即可。
class Solution {
public:
int FirstNotRepeatingChar(string str) {
vector<int> v(256);//存储字母出现的次数,例如: dp[122] = 2,表示:小写字母z,出现了两次
for(int i=0;i<str.size();i++)
v[str[i]]++;
for(int i=0;i<str.size();i++){
if(v[str[i]]==1) return i;
}
return -1;
}
};