转载请注明出处:http://blog.csdn.net/ns_code/article/details/27372033

题目描写叙述:
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>

void Swap(char *a,char *b)
{
char temp = *a;
*a = *b;
*b = temp;
} /*
反转字符串
*/
void Reverse(char *str,char *begin,char *end)
{
if(str==NULL || begin==NULL || end==NULL)
return; while(begin < end)
{
Swap(begin,end);
begin++;
end--;
}
} /*
反转单词顺序
*/
void ReverseSentence(char *str)
{
if(str == NULL)
return; char *begin = str;
char *end = str;
while(*end != '\0')
end++;
end--;
//反转整个字符串
Reverse(str,begin,end); //反转每一个单词
begin = str;
while(*begin == ' ')
begin++;
end = begin;
while(*begin != '\0')
{
while(*end!=' ' && *end!='\0')
end++;
end--;
Reverse(str,begin,end); //跳过多个空格
end++;
while(*end == ' ')
end++;
begin = end;
}
} int main()
{
char str[50000];
while(gets(str) != NULL)
{
ReverseSentence(str);
puts(str);
}
return 0;
}
/**************************************************************
    Problem: 1361
    User: mmc_maodun
    Language: C
    Result: Accepted
    Time:50 ms
    Memory:912 kb
****************************************************************/

对照了下剑指offer上的代码,还是有差距啊!

比着书上的代码,感觉自己写的代码真是弱爆了,一点都不简洁。姑且贴上吧,一点点进步,日后回来再做个对照。

【剑指offer】翻转单词顺序的更多相关文章

  1. 剑指offer——翻转单词顺序VS左旋转字符串

    字符串的交换等,注意判断字符串的是否为NULL,以及判断边界等. #include <iostream> #include <string> using namespace s ...

  2. 剑指Offer——翻转单词顺序列

    题目描述: 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上.同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思.例如,“studen ...

  3. 剑指OFFER——调整数组顺序使奇数位于偶数前面

    输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变. 剑指offer书里的版本, ...

  4. 剑指Offer-44.翻转单词顺序列(C++/Java)

    题目: 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上.同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思.例如,“student. ...

  5. 剑指offer--40.翻转单词顺序列

    时间限制:1秒 空间限制:32768K 热度指数:276854 本题知识点: 字符串 题目描述 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上.同事Cat对Fish写 ...

  6. 剑指Offer-翻转单词顺序

    题目描述: 输入一个英文句子,翻转句子中单词的顺序,但单词内字符串的顺序不变.例如输入字符串:"I am a student",则输出"student a am I&qu ...

  7. 剑指Offer 调整数组顺序使奇数位于偶数前面

    题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变.     思路: ...

  8. 剑指Offer41 反转单词顺序,单词字符顺序不变

    /************************************************************************* > File Name: 41_Revers ...

  9. 用js刷剑指offer(调整数组顺序使奇数位于偶数前面)

    题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变. 牛客网链接 js代码 ...

  10. 剑指offer 调整数组顺序使得奇数位于偶数前面

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 class Solution { public:     void  ...

随机推荐

  1. AA MME设备内部错误

    adobe audition 找不到所支持的音频设备 这是3.0的错误!     上面是cs6的错误的图   主要原因是以前安装过,没有注册表没有清理干净     解决方案: https://jing ...

  2. Jquery重新学习之二[属性attr(),removeAttr(),prop(),removeProp()]

    1:属性.attr(name|pro|key,val|key,fn)与removeAttr(name) 1.1 .attr(name) 参数name为属性名称 <a id="my_hr ...

  3. Spring MVC过滤器-登录过滤

    以下代码是继承OncePerRequestFilter实现登录过滤的代码: package com.test.spring.filter; import java.io.IOException; im ...

  4. ubuntu执行级别,设置单用户模式

    redhat的runlevel级别定义例如以下:   0:关机.不能将系统缺省执行级别设置为0,否则无法启动. 1:单用户模式.仅仅同意root用户对系统进行维护. 2:多用户模式.但不能使用NFS( ...

  5. 利用JMX统计远程JAVA进程的CPU和Memory---jVM managerment API

    从JAVA 5开始,JDK提供了一些JVM检测的API,这就是有名的java.lang.management 包,包里提供了许多MXBean的接口类,可以很方便的获取到JVM的内存.GC.线程.锁.c ...

  6. 【LeetCode】99. Recover Binary Search Tree

    Recover Binary Search Tree Two elements of a binary search tree (BST) are swapped by mistake. Recove ...

  7. explain mysql性能优化

    1 使用explain语句去查看分析结果,如   explain select * from test1 where id=1; 会出现: id  selecttype  table  type po ...

  8. 委托与事件代码详解与(Object sender,EventArgs e)详解

    委托与事件代码详解 using System;using System.Collections.Generic;using System.Text; namespace @Delegate //自定义 ...

  9. 在Quartus使用TCL脚本文件配制管脚 《本人亲测》

    方法一:Import Assignments步骤1: 使用记事本或类似软件新建一个txt文件(或csv文件),按如下格式编写管脚分配内容(不同的开发版,其内容也不同,本文以我使用的DIY_DE2开发板 ...

  10. IntelliJ IDEA 学习(一):IntelliJ IDEA15 破解方法(已验证)

    新的破解方法: 1.进到文件夹中:C:\Windows\System32\drivers\etc ,找到hosts文件,用记事本编辑 2.如果没有找到hosts文件,可在查看设置中勾选“显示隐藏的项目 ...