在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。
示例:
s = “abaccdeff”
返回 “b”
s = “”
返回 " "
class Solution {
public:
char firstUniqChar(string str) {
map<char, int> mp;
for(int i = 0; i < str.size(); i++)
mp[str[i]]++;
for(int i = 0; i < str.size(); i++){
if(mp[str[i]]==1)
return str[i];
}
return ' ';
}
};
map的使用方法
map是STL的一个关联容器,它提供一对一的hash。
第一个可以称为关键字(key),每个关键字只能在map中出现一次;
第二个可能称为该关键字的值(value);
用"array"方式插入
mapStudent[123] = “student_first”;
mapStudent[456] = “student_second”;
其实我没咋懂mp[str[i]]++ 这是什么插入方式呢
我竟然上了四年大学 才知道map 没用过…
遍历
int nSize = mapStudent.size();
//此处应注意,应该是 for(int nindex = 1; nindex <= nSize; nindex++)
//而不是 for(int nindex = 0; nindex < nSize; nindex++)
for(int nindex = 1; nindex <= nSize; nindex++) {
cout<<mapStudent[nindex]<<endl;
}