关闭

【面试题】-反转句子

629人阅读 评论(0) 收藏 举报
分类:

题目描述

给定一个字符串句子,进行反转,不能申请额外的内存,比如“This is a sentence”,输出就是”sentence a is This”

解题思路

先对每个单词进行反转,结果为 “sihT si a ecnetnes” 然后再对整个句子反转,就是最终结果。
反转不能利用额外的空间,那就使用头尾指针,交换头尾指针的数据即可

代码实现

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void Revert_words(char *p, char *q)
{

    while(p < q)
    {
        int tmp = *p;
        *p = *q;
        *q = tmp;
        p ++;
        q --;
    }
}




void Revert_string(char *str, int len)
{
    char *p = str;
    char *q = str;

    while(*p != '\0')
    {
        if(*p == ' ')
        {
            Revert_words(q,p - 1);
            p ++;
            q = p;
        }

        else
            p ++;
    }

    Revert_words(q,p - 1);

    Revert_words(str, p - 1);


}

int main(int argc, char const *argv[])
{
    char str[] = "This is a dog";


    printf("%s \n", str);

    Revert_string(str);

    printf("%s \n", str);

    return 0;
}
0
0

猜你在找
【直播】计算机视觉原理及实战—屈教授
【套餐】深度学习入门视频课程—唐宇迪
【套餐】Hadoop生态系统零基础入门--侯勇蛟
【套餐】嵌入式Linux C编程基础--朱有鹏
【套餐】2017软考系统集成项目——任铄
【套餐】Android 5.x顶级视频课程——李宁
【直播】广义线性模型及其应用——李科
【直播】从0到1 区块链的概念到实践
【直播】机器学习之凸优化——马博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:128913次
    • 积分:3363
    • 等级:
    • 排名:第9962名
    • 原创:105篇
    • 转载:10篇
    • 译文:0篇
    • 评论:78条
    最新评论