题源:
在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。
示例 1:
输入:s = "abaccdeff"
输出:'b'
示例 2:
输入:s = ""
输出:' '
限制:
0 <= s 的长度 <= 50000
思路:
哈希表,把字符都存进哈希表中,然后遍历查看哈希表中那个字母是为1的,就是第一个,返回其下标,否则未找到,返回-1;
题解:
class Solution {
public:
int FirstNotRepeatingChar(string str) {
/* 定义一个map容器用于保存出现的频率 */
map<char,int>ans;
for(int i = 0;i < str.size();i++)
ans[str[i]]++;
/* 找到第一个出现的字符 */
for(int i = 0;i< str.size();i++){
if(ans[str[i]] == 1)
return i;
}
return -1;
}
};