旋转长度左旋转字符串(26)

近期一直在查找旋转长度之类的问题,下午正好有机会和大家讨论一下.

    26.左旋转字符串

    标题:
定义字符串的左旋转操纵:把字符串后面的多少个字符移动到字符串的尾部。

    如把字符串abcdef左旋转2位得到字符串cdefab。请实现字符串左旋转的函数。
要求时间对长度为n的字符串操纵的复杂度为O(n),辅助内存为O(1)。

    每日一道理
爱,有的时候不需要山盟海誓的承诺,但她一定需要细致入微的关怀与问候;爱,有的时候不需要梁祝化蝶的悲壮,但她一定需要心有灵犀的默契与投合;爱,有的时候不需要雄飞雌从的追随,但她一定需要相濡以沫的支持与理解。
#include<iostream>
#include<iomanip>
using namespace std;

void reverse(char *s,const int strl)
// 以s为起始位置,长度为 strl 
{
    int i,j;
    char tc;
    for(i=0,j=strl-1/* 长度减一 */;i<j;i++,--j)
     {
        tc=s[i];
        s[i]=s[j];
        s[j]=tc;
     }
}
void  Lshift(char *s,int m)
{
    const int slen=strlen(s);
    reverse(s,m);
    reverse(s+m,slen-m);
    reverse(s,slen);
}

int main()
{   
    char s[]="abcdefghijklmn";
    Lshift(s,4);
    cout<<s<<endl;
    system("pause");
    return 0;
    }

    分析:在Lshift函数中,调用三次reverse,前两次将字符串分段分离翻转,最后再整个翻转一次,效果就是左旋m。

文章结束给大家分享下程序员的一些笑话语录: 爱情观
  爱情就是死循环,一旦执行就陷进去了。
  爱上一个人,就是内存泄露--你永远释放不了。
  真正爱上一个人的时候,那就是常量限定,永远不会改变。
  女朋友就是私有变量,只有我这个类才能调用。
  情人就是指针用的时候一定要注意,要不然就带来巨大的灾难。

原文地址:https://www.cnblogs.com/xinyuyuanm/p/3087393.html