cf797c 栈,字符串

还以为能用单调栈做出来,,想了老半天,最后发现模拟一下很好做的

按顺序把字符压栈即可

#include<bits/stdc++.h>
using namespace std;
#define maxn 100005
char s[maxn];
stack<int>stk;
int vis[30];
int main(){
    scanf("%s",s);
    int len=strlen(s);
    for(int i=0;i<len;i++)vis[s[i]-'a']++;
    
    for(int i=0;i<len;i++){
        stk.push(s[i]-'a');
        vis[s[i]-'a']--;
        int flag=0;
        while(!stk.empty()){
            int tmp=stk.top();
            for(int i=0;i<tmp;i++)if(vis[i])flag=1;
            if(flag) break;
            putchar(tmp+'a');
            stk.pop();
        }
    }
} 
原文地址:https://www.cnblogs.com/zsben991126/p/10226768.html