C++ 双map解法
第一个只出现一次的字符
http://www.nowcoder.com/questionTerminal/1c82e8cf713b4bbeb2a5b31cf5b0417c
原理是设置两个map,一个map保存字符的出现次数,一个map保存每个字符的初始地址。
int FirstNotRepeatingChar(string str) {
if(str.size() <=0)
{
return -1;
}
map<char,int>res;//保存出现次数
map<char,int>address;//保存初始地址
int lenth = str.size();
for(int i = 0;i<lenth;i++)
{
if(res.find(str[i]) != res.end())
{
res[str[i]]++;
}
else
{
res[str[i]] = 1;
address[str[i]] = i;
}
}
for(auto i: str)//对str遍历找到第一个出现次数为一的字符
{
if(res[i] == 1)
{
return address[i];
}
}
}
查看19道真题和解析