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

相关推荐

牛客389580366号:读书的意义在于提升自己和他人吧,“阶级意识”是读书过程中的产出,“跨越阶级”是通过读书获得的能力
点赞 评论 收藏
分享
11-18 09:44
Java
小白也想要offer:简历别放洋屁,搞不还还放错了,当然你投外企除外,以上纯属个人观点
点赞 评论 收藏
分享
评论
1
1
分享
牛客网
牛客企业服务