美文网首页C算法&面试题
翻转句子中单词的顺序

翻转句子中单词的顺序

作者: AwesomeAshe | 来源:发表于2016-03-31 21:21 被阅读48次
题目

先介绍我自己的思路:
遍历这个字符串,然后用一个char*类型的数组记录下每一个空格的位置,然后打印的时候,打印两个指针之间的字符。

    for (; *c != '\0'; c++)
    {
        if (*c == ' ')
            space[++i] = c;
    }

这是遍历句子然后记录空格位置的程序。

只是我写程序的时候,处理空格不够完美,多打了空格并且代码也不是特别好
for (; i > 1; i--) print_char(space[i-1]+1, space[i]); print_char(space[0 ] , space[1]);
这一段我们本来是合在一起打印的,结果会出现空格的问题,然后我就这样拆开了。

下面是我的code:

#include <iostream>

void print_char( char*beg, char*end)
{
    for (char* s = beg; s != end; s++)
        std::cout << *s;
    std::cout << " ";
}

void reverse_sentence(char* str)
{
    char* c = str;
    int i = 0;
    char* space[50] = { NULL };
    space[0] = c;//space[0]=beg
    
    for (; *c != '\0'; c++)
    {
        if (*c == ' ')
            space[++i] = c;
    }
    space[++i] = c;//end

    for (; i > 1; i--)
        print_char(space[i-1]+1, space[i]);
    print_char(space[0 ] , space[1]);
}
int main()
{
    char* str = "I am a student..";
    reverse_sentence(str);
}

运行结果:

运行结果1

可以看出,最后一个字母的后面还是多打了一个空格,不过可以不用上面的print函数,单独给第一个单词写一句,不要打印空格的句子,我就不尝试了。

思路2:

还可以先把整个字符串翻转,得到
..tneduts a ma I然后呢,再翻转每个单词。
这样的话,先遍历一遍进行翻转
这里大家准备怎么样翻转一个字符串呢?
介绍一个我觉得实现起来很简单的方法:
头尾各一个指针,然后向中间遍历,swap!
我直接写过这个问题:
翻转字符串

整个句子的翻转完成之后呢,我们再检测空格,然后对每个单词调用这个翻转的程序,也是很巧妙呢
代码我就懒得写了,还是喜欢自己写的哈哈。

相关文章

  • 面试题58 - I. 翻转单词顺序

    翻转单词顺序 题目描述 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通...

  • 翻转字符串

    题目:翻转单词顺序。 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字...

  • 翻转字符串

    题目一:翻转单词顺序。 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通...

  • 面试题58(剑指offer)--翻转字符串

    题目一: 翻转单词顺序。输入一个英文句子,翻转句子中单词的顺序,但单词内字符顺序不变。为简单起见,标点符号和普通字...

  • 面试题58(1):翻转字符串

    题目 翻转单词顺序输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一...

  • 剑指Offer Java版 面试题58:翻转字符串

    题目一:翻转单词顺序。输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字...

  • 剑指offer | 翻转单词顺序

    翻转单词顺序 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变,为简单起见,标点符号和普通字母一样处...

  • 58.翻转字符串(简单)

    考点:本题考查字符串和知识迁移能力 题目一描述:翻转单词顺序 输入一个英文句子,翻转句子中单词的顺序,但单词内字符...

  • 翻转句子中单词的顺序

    先介绍我自己的思路:遍历这个字符串,然后用一个char*类型的数组记录下每一个空格的位置,然后打印的时候,打印两个...

  • 剑指offer 65- 翻转单词顺序

    输入一个英文句子,单词之间用一个空格隔开,且句首和句尾没有多余空格。 翻转句子中单词的顺序,但单词内字符的顺序不变...

网友评论

    本文标题:翻转句子中单词的顺序

    本文链接:https://www.haomeiwen.com/subject/eeaelttx.html