题解 | #找出字符串中第一个只出现一次的字符# 哈希表

找出字符串中第一个只出现一次的字符

https://www.nowcoder.com/practice/e896d0f82f1246a3aa7b232ce38029d4

#include <iostream>
#include <map>
#include <vector>
using namespace std;

int main() {
    string s;
    cin >> s;
    int n = s.size();
    map<char, int> se;
    map<char,int> mp;

    for(int i=0; i<n; i++){
        // 统计出现的次数
        if(mp.find(s[i]) == mp.end()){
            mp[s[i]] = 1;
        }else {
            mp[s[i]]++;
        }
        // 统计出现的位置
        if(se.find(s[i]) == se.end()){
            se[s[i]] = i;
        }
    }

    char res;
    int loc = 2000;
    for(auto i:mp){
        if(i.second == 1){
            if(se[i.first] < loc){
                loc = se[i.first];
                res = i.first;
            }
        }
    }
    if(loc == 2000){
        cout << "-1" << endl;
        return 0;
    }

    cout << res << endl;
    return 0;
}
// 64 位输出请用 printf("%lld")

这道题的思路主要是基于对出现次数和第一次出现位置的统计,由于没有说字符串中只有字母,所以需要用到哈希表。

最终加上对于第一次出现位置的逻辑判断就好。

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-03 18:22
投了几百份简历,专业和方向完全对口,都已读不回。尝试改了一下学校,果然有奇效。
steelhead:这不是很正常嘛,BOSS好的是即便是你学院本可能都会和聊几句,牛客上学院本机会很少了
点赞 评论 收藏
分享
流浪的神仙:无恶意,算法一般好像都得9硕才能干算法太卷啦
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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