第一个只出现一次的字符

简介: 第一个只出现一次的字符
    char firstUniqChar(string s) {
        unordered_map <char,int>m;
        for(auto c:s){
            if(m.find(c)==m.end()){
                m.insert(pair<char,int>(c,1));
            }else{
                m[c]++;
            }
        }
        for(auto c:s){
            if(m[c]==1){
                return c;
            }
        }
        return NULL;
    }

注意几个事情:

①每次调用m[c]查找,若不存在就会自动插入,键名为c,值为0的数据。

②还要map插入可以看成是一个栈,后进的在遍历的时候会被先访问到。

优化过后的代码:

 char firstUniqChar(string s) {
        unordered_map <char,int>m;
        for(auto c:s){
                m[c]++;
        }
        for(auto c:s){
            if(m[c]==1){
                return c;
            }
        }
        return ' ';
    }
相关文章
|
2月前
判断字符
【10月更文挑战第18天】判断字符。
31 5
|
1月前
删除字符串中的除字母外的字符
【10月更文挑战第31天】删除字符串中的除字母外的字符。
39 4
|
3月前
判断第二个字母
判断第二个字母。
30 4
|
4月前
|
Java
输入一个字符串,找出其中不含有重复字符的最长子串的长度。
这篇文章提供了一个Java解决方案,用于找出输入字符串中不含有重复字符的最长子串的长度,通过使用HashSet来跟踪字符并计算最长不重复字符子串。
输入一个字符串,找出其中不含有重复字符的最长子串的长度。
|
7月前
|
C++ 索引
字符串中的第一个唯一字符(C++)
字符串中的第一个唯一字符(C++)
65 0
题目:下列给定程序中函数fun的功能是:从p所指字符串中找出ASCII码值最大的字符,将其放在第一个位置上,并将该字符前的原字符向后顺序移动。
题目:下列给定程序中函数fun的功能是:从p所指字符串中找出ASCII码值最大的字符,将其放在第一个位置上,并将该字符前的原字符向后顺序移动。
107 0
|
索引
字符串中的第一个唯一字符
字符串中的第一个唯一字符
77 0
|
C语言
查找某字符串出现的位置,并且输出该第一个字母所在的位
查找某字符串出现的位置,并且输出该第一个字母所在的位
138 0
查找某字符串出现的位置,并且输出该第一个字母所在的位
判断字符串首个字母是否大写,若大写,则输出该字符串中大写字母的个数 并打印。
判断字符串首个字母是否大写,若大写,则输出该字符串中大写字母的个数 并打印。
169 0
删除字符串中字符最少的字符并返回
删除字符串中字符最少的字符并返回
下一篇
DataWorks