C++ 双map解法

第一个只出现一次的字符

http://www.nowcoder.com/questionTerminal/1c82e8cf713b4bbeb2a5b31cf5b0417c

原理是设置两个map,一个map保存字符的出现次数,一个map保存每个字符的初始地址。

int FirstNotRepeatingChar(string str) {
    if(str.size() <=0)
        {
            return -1;
        }
        map<char,int>res;//保存出现次数
        map<char,int>address;//保存初始地址
        int lenth = str.size();
        for(int i = 0;i<lenth;i++)
        {
            if(res.find(str[i]) != res.end())
            {
                res[str[i]]++;
            }
            else
            {
                res[str[i]] = 1;
                address[str[i]] = i;
            }
        }
        for(auto i: str)//对str遍历找到第一个出现次数为一的字符
        {
            if(res[i] == 1)
            {
                return address[i];
            }
        }
    }
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务