输入一个长度为n的字符串,找到其最小字典序。
此题使用贪心算法,比较字符串两端的大小,取小的字符接入(或输出)新的字符串
。若两端相同,则比较内侧两个字符的大小,先取小的一边。可以设置标记符a,b
直到a>=b时循环结束。
#include <iostream>
using namespace std;
int main(){
int n;
cin>>n;
char str[n];
cin>>str;
int a=0,b=n-1;
bool flag=true;
while(a<=b){
for(int i=0;a+i<b;i++){
if(str[a+i]>str[b-i]){
flag=true;
break;
}
if(str[a+i]<str[b-i]){
flag= false;
break;
}
}
if(flag){
putchar(str[b--]);
}else{
putchar(str[a++]);
}
}
return 0;
}