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];
            }
        }
    }
全部评论

相关推荐

07-01 23:23
郑州大学 Java
否极泰来来来来:牛客迟早有高三的
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-07 12:04
毕业生招你惹你了,问一个发薪日来一句别看网上乱七八糟的你看哪个工作没有固定发薪日扭头就取消了面试就问了一句公司都是这个态度吗还搞上人身攻击了...
程序员小白条:呃呃呃,都还没面试,我都不会问这么细,何况通不通过,去不去都另说,你没实力和学历的话,在外面就这样,说实话没直接已读不回就不错了,浪费时间基本上
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务