转载请注明出处: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. javascript 内置类型

    JavaScript有七种内置类型: 空类型:null 未定义:undefined 布尔:boolean 数字:number 字符串:string 对象:object 符号:symbol(ES6新增) ...

  2. 关于图片无缝拼接的学习(PTGui)

    一.简介 在用到单反.无人机.手机等拍照工具,需要无缝拼接. 二.下载 官网:http://www.ptgui.com/download.html 其他:http://pan.baidu.com/sh ...

  3. 解析theme()

    drupal_render()只是对theme()的调用做了包装,真正做任务的还是theme(). function theme($hook, $variables = array()) { ... ...

  4. QQ的未来在那里

    http://blog.sina.com.cn/s/blog_53bcb13e0100030g.html 早期的QQ非常清爽,没有广告,友好的界面,飞快的连接速度,为中国人量身订做的体贴功能,非常吸引 ...

  5. 【C语言】二维数组中的查找,杨氏矩阵

    //二维数组中的查找,杨氏矩阵 //在一个二维数组中,每行都依照从左到右的递增的顺序排序.每列都依照从上到下递增的顺序排序. //请完毕一个函数.输入这种一个数组和一个数,推断数组中是否包括这个数. ...

  6. Python isdecimal() 方法

    描述 Python isdecimal() 方法检查字符串是否只包含十进制字符.这种方法只存在于unicode对象. 注意:定义一个十进制字符串,只需要在字符串前添加 'u' 前缀即可. 语法 isd ...

  7. Js获取当前时间、日期

    var myDate = new Date();myDate.getYear();        //获取当前年份(2位)myDate.getFullYear();    //获取完整的年份(4位,1 ...

  8. python 操作redis之——有序集合(sorted set) (七)

    #coding:utf8 import redis r =redis.Redis(host=") 1.Zadd 命令用于将一个或多个成员元素及其分数值加入到有序集当中.如果某个成员已经是有序 ...

  9. Linux find 命令概览

    Linux下find命令在目录结构中搜索文件,并执行指定的操作.Linux下find命令提供了相当多的查找条件,功能很强大.由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时 ...

  10. vsftpd被动模式配置

    1.vsftp配置   参考文章http://linux008.blog.51cto.com/2837805/6105992.设置vsftpd.conf开启被动模式参数    #vim    pasv ...