Best cow line
题目大意:给一个长度为n的字符串s,通过选取s的第一个元素或者最后一个元素加入到空串T的尾部(进行操作后s应该删除第一个或者最后一个元素),求T字典序最小的排序方法
思路:先比较首元素和尾元素,字典序小的就加入到T中,若是相等,那么left加1,right减1,知道不相等的时候
#include <iostream>
#include <vector>
#include <cstdio>
using namespace std;
int main()
{
int n;
char a[2005];
vector<char> b;
cin>>n;
getchar();
for(int i=0;i<n;i++)
{
cin>>a[i];
getchar();
}
int left=0,right=n-1;
while(left<=right)//当left==right时说明字符串s只剩一个元素了
{
int flag=-1;//当left=right时,不能通过for循环来该改变left right的值,通过该变量来使right值减小
for(int i=0;i+left!=right-i;i++)
{
if(a[left+i]<a[right-i])
{
b.push_back(a[left++]);
flag=1;
break;
}
else if(a[left+i]>a[right-i])
{
b.push_back(a[right--]);
flag=1;
break;
}
}
if(flag!=1)b.push_back(a[right--]);;
}
int ans=0;
for(int i=0;i<b.size();i++)
{
cout<<b[i];
ans++;
if(ans%80==0)cout<<endl;
}
cout<<endl;
}