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;
}
全部评论

相关推荐

学不完不睡觉11:一眼点评,不过,看运气吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务