刷题-第一次只出现1次的字符

查找第一次只出现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;
    }
};

猜你喜欢

转载自blog.csdn.net/iea5357/article/details/106983943