问题分析,从S串头部删除一个字符,加到T的尾部
从S的尾部删除一个字符加到T的尾部,构造尽可能小的T串
S="ACDBCB" --> S="CDBCB" --> S=“CDBC“ --> S="CDB"
T="" T="A" T="AB" T="ABC"
头 尾 尾
贪心,按照字典序比较S和将S反转后的字符串S'
如果S较小,从头取
否则,从尾取
#include <iostream> #include <cstdio> #include <string> #include <cstring> using namespace std; int main() { int N; while(scanf("%d",&N)!=EOF) { getchar(); char T[2010]; char str[2010]; for(int i = 0; i < N; i++) { scanf("%c",&str[i]); getchar(); } int l = 0,r = N-1; char s1[2010],s2[2010]; int cnt = 0; while(l <= r) { for(int i = l; i <= r; i++) { s1[i-l] = str[i]; s2[r-i] = str[i]; } s1[r+1-l] = '