CSL的字符串

思路:维护一个单调栈,同时维护字符是否出现过和字符的剩余个数
链接:https://ac.nowcoder.com/acm/contest/551/D

// 
#include <bits/stdc++.h>
int vis[300];
using namespace std;
int main(){
    string s,res;
    cin >> s;
    unordered_map<int,int>cnt;
    for(auto c:s) cnt[c]++;
    for(int i=0;i<s.size();i++){
        cnt[s[i]]--;//处理当前只剩下这一个元素的情况
        if(!vis[s[i]]){
            while(res.size() && cnt[res.back()] && s[i] < res.back()){
                vis[res.back()] = 0;
                res.pop_back();
            }
            res.push_back(s[i]);
            vis[s[i]] = 1;
        }
    }
    cout << res << endl;
    return 0;
} 
全部评论

相关推荐

11-23 22:07
同济大学 Java
贺兰星辰:你这简历完全可以缩到一页,校园工作、自我评价完全可以删了,没人看的;个人技能可以写多点。
点赞 评论 收藏
分享
专心打鱼:举报给她开了,正好给应届生腾一个HC
点赞 评论 收藏
分享
评论
1
1
分享
牛客网
牛客企业服务