题目描述
在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符的位置。若为空串,返回-1。位置索引从0开始
思路
先排序,然后方便用一个map来记录那些出现的次数大于1次的字符,然后再从原始的串遍历,如果这个字符第一次出现且在后面不会再次出现即总共只出现了一次,那么就输出。如果不存在,就输出-1。
class Solution {
public:
int FirstNotRepeatingChar(string str) {
if(str.size()==0)return -1;
map<char,int>mm;
string temp=str;
mm.clear();
sort(str.begin(),str.end());
int len=str.size();
for(int ii=0;ii<len;ii++){
if(str[ii]==str[ii+1]){
mm[str[ii]]=1;
}
}
for(int ii=0;ii<len;ii++){
if(!mm[temp[ii]]){
return ii;
}
}
return -1;
}
};