查找第一次只出现1次的字符:
在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).(从0开始计数)
解题思路:
直观的考虑就是将字符串中每个字符出现的次数统计下来,然后找出第一次出现1次的字符。
C++中STL中map是一种关联容器,底层实现结构采用红黑树。map以key-value结构的方式存储数据,关键字key起到了索引作用,value对应索引的数据,map的迭代器不允许修改key的值,但是可以通过key修改对应的value,map内按照key的值自动排序。map支持下标操作,可以利用key访问value,访问过程中如果返现key值不存在则向map中插入该key和默认值
std::map<char, int> my_map;
my_map['a']=1;
利用map数据结构统计字符串中每个字符出现的次数,key为字符,对应的value为出现的次数,而后依序遍历字符串每个字符,查看其出现的次数:
class Solution {
public:
int FirstNotRepeatingChar(string str) {
map<char,int> m;
for(auto value:str){
m[value]++;
}
for(int i=0;i<str.size();i++){
if(m[str[i]]==1)
return i;
}
return -1;
}
};