首页 > 其他 > 详细

字符串翻转和左旋

时间:2016-09-16 21:17:58      阅读:139      评论:0      收藏:0      [点我收藏+]

问题一:将字符串“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);
    }
}

字符串翻转和左旋

原文:http://www.cnblogs.com/beaglebone/p/5877095.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!