笔试面试题–反转字符串中的单词

作者: veaxen 分类: 笔试面试 发布时间: 2017-07-27 15:08

写一个函数,将字符串翻转,翻转方式如下:“I am a student”反转成“student a am I”,不借助任何库函数

思路:
先对整个字符进行反转,然后查找空格,再对用空格分割开的单词进行单词内的反转,然后就可以得到正确结果咯,代码如下:

#include <iostream>

void reverse(char str[],int l,int h)//反转字符串
{
    if(str == NULL || *str == NULL)
        return;
    while(l < h){
        if(str[l] != str[h]){
            str[l] ^= str[h];
            str[h] ^= str[l];
            str[l] ^= str[h];
        }
        ++l;
        --h;
    }
}

void changestr(char str[],int len)
{
    reverse(str,0,len-1);
    int l = 0;
    for(int i=0;i<len;i++){
        if(str[i] == ' '){
            reverse(str,l,i - 1);
            l = i + 1;
        }
    }

}

int main()
{
    char str[] = "I am a student";
    changestr(str,sizeof(str)-1);
    std::cout<<str<<std::endl;
    return 0;
}

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

一条评论

发表评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据