剑指offer(二)第一个只出现一次的字符
题目:
思路:
方法一:map
创建map,遍历字符串,用map统计每个字符出现的次数;
再次遍历字符串,在map中查看字符的value值,若为1,则输出下标,否则返回-1;
class Solution {
public:
int FirstNotRepeatingChar(string str) {
unordered_map<char,int> mp;
int len=str.length();
//第一次遍历,统计每个字符出现的次数
for(const char ch:str)
mp[ch]++; //map可通过下标访问;
//二次遍历
for(int i=0;i<len;i++)
{
if(mp[str[i]]==1)
return i;
}
return -1;
}
}