zoukankan      html  css  js  c++  java
  • 九度OJ 1361 翻转单词顺序

    题目地址:http://ac.jobdu.com/problem.php?pid=1361

    题目描述:
    JOBDU最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?
    输入:
    每个测试案例为一行,表示一句英文句子。
    我们保证一个句子的单词数不会超过600,每个单词的长度也不会超过30。但是需要注意的是Fish是个不拘小节的人,有时候两个单词中间可能会有很多空格。为了方便起见,你可以认为一行的字符总数不会超过50000个,标点符号可以和普通字母一样处理。
    输出:
    对应每个测试案例,把翻转后的正确的句子单独输出一行。
    样例输入:
    student. a am I
    I'm a Freshman and I like JOBDU!
    样例输出:
    I am a student.
    JOBDU! like I and Freshman a I'm
    #include <stdio.h>
    #include <string.h>
     
    void Reverse (char str[], int from, int to){
        char tmp;
        while (from < to){
            tmp = str[from];
            str[from] = str[to];
            str[to] = tmp;
            ++from;
            --to;
        }
    }
     
    int main(void){
        char input[50001];
        char blank = ' ';
        int i, len;
        int from, to;
     
        while (gets(input) != NULL){
            len = strlen (input);
            Reverse (input, 0, len-1);
            i=0;
            while (i < len){
                while (i < len && input[i] == blank)
                    ++i;
                from = i;
                while (i < len && input[i] != blank)
                    ++i;
                to = i-1;
                Reverse (input, from, to);
            }
            puts (input);
        }
        return 0;
    }
    

    参考资料:何海涛 -- 程序员面试题精选100题(07)-翻转句子中单词的顺序[算法]

  • 相关阅读:
    webstorm配置github 以及本地代码上传github。
    日期控件------moment.js
    图片查看器
    日期
    配置一个node服务器
    git代码管理
    vue
    javascript (字符串, 数组, 对象 , 日期 和 操作元素节点 动画 定时器)
    html css
    JS常用方法
  • 原文地址:https://www.cnblogs.com/liushaobo/p/4373825.html
Copyright © 2011-2022 走看看