查找字符串中第一个唯一的字符,返回其index;
这里我用了hash的方法,没遇到一个新的字符就会将其保存至map中,我以为map里面会按照insert的顺序进行排放,结果map保存成功后输出结果如下:
先看代码:
class Solution {
public:
int firstUniqChar(string s) {
int len=s.length();
if(len==0)
return -1;
std::map<char,int> s_map;
std::vector<int> index;
// cout<<len<<endl;
for(int i=0;i<len;i++)
{
//cout<< i<<" ";
std::map<char,int>::iterator iter;
iter=s_map.find(s[i]);
//cout<<s[i]<<" ";
if(iter==s_map.end())
{
// cout<< "do not find " ;
s_map.insert(pair<char,int>(s[i],1));
index.push_back(i);
}
else{
iter->second++;
}
//cout<<iter->second<<endl;
}
std::map<char,int>::iterator iter;
int k=0;
for(iter=s_map.begin();iter!=s_map.end();iter++)
{
cout<< k<<" "<<iter->first <<" "<<iter->second <<endl;
//if(iter->second==1)
//return index[k];
k++;
}
return -1;
}
};
结果截屏: