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; }