给定长度为N的字符串s,要构造一个长度为N的字符串T。
起初,T 是一个空串,随后反复进行下列 任意 操作。
(1)从 s 的头部 删除一个 字符,加到 T的 尾部
(2)从 s 的尾部 删除一个 字符,加到 T 的 尾部
你的 目标是 要构造字典序尽可能小的字符串 T。
(s 只包含大写英文字母)
输入
10
ASDFCBDBCA
输出
AACBDBCFDS
#include<stdio.h>
char s[2000 + 10];
int main()
{
int N;
scanf("%d",&N);
getchar();
for(int i = 0; i < N; i++)
scanf("%c",&s[i]);
int a = 0, b = N - 1;
while(a <= b)
{
// 将从左起和从右起的字符串比较
bool left = false;
for(int i = 0; a + i <= b; i++)
{
if(s[a + i] < s[b - i])
{
left = true;
break;
}
else if(s[a + i] > s[b - i])
{
left = false;
break;
}
}
if(left) putchar(s[a++]);
else putchar(s[b--]);
}
putchar('\n');
}
字典序最小问题
最新推荐文章于 2021-09-24 15:15:27 发布