编程实现字符串中各单词的翻转

例题:将“i am from shanghai”=>"shanghai from am i".

思想:翻转分为两部,第一部将整个字符串全部翻转变成“iahgnahs ....”,然后依据空格,再将每个单词翻转变成“shanghai ...”.这两个步骤可以调换,即先单词翻转,在整个字符串翻转。另外C++有reverse函数。

void reverse(char* str)
{
    assert(*str);
    //第一步整个翻转
    char* end=str,*start=str;
    //找到字符串结尾
    while (*end) {
        end++;
    }
    end--;
    while(start<end)
    {
        swap(*start,*end);
        start++;
        end--;
    }
    cout<<str<<endl;
    //第二步单个再翻转
    end=str,start=str;
    while (1) {
        if(*end==' '||*end=='\0'){
            char *s=start;char *e=end-1;
            start=end+1;
            while(s<e)
            {
                swap(*s,*e);
                s++;e--;
            }
        }
        if(*end!='\0'){
           end++;
        }else{
            break;
        }

    }
}
int main(void)
{
    char a[]="abcdef 0123 qwe";
    reverse(a);
    cout<<a;
    return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_41710905/article/details/79600193