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

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

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

//记录一下,最开始想的是出现重复的位置给他加上一个大数然后越搞越乱
//然后反应过来,重复了就直接标记为-1抛弃掉
//然后还忽略了一个没有结果的情况,我返回的是-1,需要判断一下只有是0-25的数才输出字符

#include<iostream>
#include<string>
#include<vector>

using namespace std;
int main(){
    string inputstr;
    cin >> inputstr;
    vector<int> vec(26,0);
    int nums = 0;
    for(int i = 0;i<inputstr.size();++i){
        if(vec[int(inputstr[i]-'a')] == 0)vec[int(inputstr[i]-'a')] = ++nums;
        else vec[int(inputstr[i]-'a')] = -1;
    }
    int min = nums,res = -1,i;
    for(i = 0;i<vec.size();++i){
        if(vec[i] == 0 || vec[i] == -1)continue;
        if(min>=vec[i]){
            min = vec[i];
            res = i;
        }
    }
    if(res == -1)cout << -1 << endl;
    else cout << char(res+'a') << endl;
    return 0;
}
全部评论

相关推荐

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