首页 > 代码库 > 字符串翻转和左旋

字符串翻转和左旋

问题一:将字符串“abcde”翻转成“edcba”;用start表示字符串的首地址,end表示字符串的最后一个字符的指针。

void reverse(char* start,char *end){        if(start==NULL||end==NULL)        return ;    while(start<end)    {        char temp=*start;        *start=*end;        *end=temp;        start++;        end--;    }}

问题二:将字符串“I am a student.”翻转,但是每个单词内的字符顺序不变,变成“student. a am I”。

void reversesentence(char *str){    if(str==NULL)        return;    char *begin=str;    char *end=str;    while(*end!=\0)        end++;    end--;    reverse (begin,end);        end=str;    while(*begin!=\0)    {        if(*begin== )        {            begin++;            end++;        }        else if(*end== ||*end==\0)        {            end--;            reverse(begin,end);            begin=++end;        }        else        {            end++;        }    }}

问题三:将字符串"abcdefg"左旋2位成字符串“cdefgab”;将字符串看成是两部分,前两位为第一部分,后面剩下的字符为第二部分。先将这两部分分别翻转,再将整体进行翻转。

void leftreverse(char *str,int n){    int len=strlen(str);    if(str!=NULL&&n>0&&n<len)    {        char *start1=str;        char *end1=str+n-1;        char *start2=str+n;        char *end2=str+len-1;        reverse(start1,end1);        reverse(start2,end2);        reverse(start1,end2);    }}

字符串翻转和左旋