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]; } } }