ACM中一些很妙的题

给定长度为N的字符串S,要构造一个长度为N的字符串T。T初始是空字符串。S由大写字母构成。
构造过程通过反复进行以下任意操作:
从S的头部删除一个字符,添加到T的尾部
从S的尾部删除一个字符,添加到T的尾部
请你构造出字典序尽可能小的字符串T(字典序是指首先比较第一个字符,如果不同则第一个字符
较小的字符串更小,如果相同则比较第二个字符,以此类推)
 
#include <iostream>
using namespace std;
 
int main(){
    int N;
    string S, T;//构造两个字符串
     
    cin>>N>>S;
     
    int L=0, R=N-1;
    while(L<=R)
    {
      int i=0;
      while(S[L+i]==S[R-i]) i++;
        T+=S[L+i]<S[R-i]?S[L++]:S[R--];
    }
    cout<<T;
}
posted @ 2022-01-07 19:15  may0113  阅读(123)  评论(0)    收藏  举报