字符串的旋转

题目描述:给定一个字符串,要求将字符串前面的若干个字符移到字符串的尾部。

void LeftShitOne(char*s,int n)
{
   char t=s[0];
   for(int i=1;i<n;i++)
   {
      s[i-1]=s[i];
   }
      s[n-1]=t;
}
  void LeftRotateString(char*s,int n,int m)
  {
     while(m--)
  {
     LeftShitOne(s,n);
  }
}

三步移位

操作:

1 将原字符串分为X和Y两部分

2 将X的所有字符串反转,在将Y的所有字符串也反转

3 将所得的反转结果在给予整体反转,即整体反转

 

void ReverseString(char*s,int from,int to)
{
   whlie(from<to)
   {
      char t=s[from];
      s[from++]=s[to];
      s[to--]=t;
   }
}
void LeftRotateString(char*s,int n,int m)
{
   //若要左移动大于n位,那么与%n是等阶的
   m%=n;
  ReverseString(s,0,m-1);
  ReverseString(s,m,n-1);
  ReverseString(s,0,n-1);
}

posted @ 2018-10-13 09:45  ybt雨过天晴  阅读(222)  评论(0)    收藏  举报