【面试题】-反转句子

原创 2015年07月08日 17:21:03

题目描述

给定一个字符串句子,进行反转,不能申请额外的内存,比如“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;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

注意,CFileDialog 会改变当前路径

今天用到 CFileDialog  来保存文件,无意中发现之前读取XML文件方法失败了,LoadFile 总是返回NULL。之前LoadFile 都是用相对路径来加载XML文件,问题很明显,应该是路径...

九章算法面试题25 反转单词序列

将一个句子中的单词逆序排列。要求使用O(1)的额外存储空间。如I Love You逆序之后是You Love I

从尾到头打印链表

题目描述 输入一个链表,从尾到头打印链表每个节点的值。 输入描述: 输入为链表的表头 输出描述: 输出为需要打印的“新链表”的表头 方法一 剑指offer书上写的用vector来实现栈...

题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。例如输入“I am a student.”,则输出“student

转自:http://www.360doc.com/content/12/0313/16/1429048_194040867.shtml 谢谢观...

句子反转

题目描述 给定一个句子(只包含字母和空格), 将句子中的单词位置反转,单词用空格分割, 单词之间只有一个空格,前后没有空格。 比如: (1) “hello xiao mi”-> “mi xiao h...

将句子中的单词位置反转

给定一个句子(只包含字母和空格), 将句子中的单词位置反转,单词用空格分割, 单词之间只有一个空格,前后没有空格。 比如: (1) “hello xiao mi”-> “mi xiao...

nginx的根目录设置会受到php.ini中 doc_root 的设置影响

nginx的根目录设置会受到php.ini中 doc_root 的设置影响

算法面试题之句子反转

小米2017年校园招聘题“句子反转”

面试题准备(01)-反转句子中单词的顺序

这道题查了很久的资料,最后还是找同学发现了问题。一开始是 char *a="I am a boy!"这样赋值的,这是一个字符串常量,其在程序中是存放在常量区的,其值是不能改变的。 一个已经犯了两次的错...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)