转载请注明出处: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. MySQL之myisamchk

    Description, check and repair of MyISAM tables.Used without options all tables on the command will b ...

  2. linux(Centos)下编译安装gcc4.8.2

    欢迎转载.转载请注明原文地址:http://blog.csdn.net/majianfei1023/article/details/46811159 近期要用到c++ 11,所以没办法仅仅得把那台ce ...

  3. Flume入门:安装、部署

    一.什么是Flume? flume 作为 cloudera 开发的实时日志收集系统,受到了业界的认可与广泛应用.Flume 初始的发行版本目前被统称为 Flume OG(original genera ...

  4. Apache Directory Studio

    Apache Directory Studio 是一个 LDAP 的工具平台,用来连接到任何 LDAP 服务器并进行管理和开发工作.主要功能:LDAP浏览器.LDIF编辑器.嵌入式 ApacheDS. ...

  5. 【转载】正则过滤所有html标签,只留文字的方法。

    public static string Html2Text(string htmlStr) { if (String.IsNullOrEmpty(htmlStr)) { return "& ...

  6. UVA10624 - Super Number(dfs)

    题目:UVA10624 - Super Number(dfs) 题目大意:给你n和m要求找出这种m位数,从第n位到第m位都满足前i位是能够被i整除,假设没有这种数,输出-1.有多个就输出字典序最小的那 ...

  7. 我使用过的Linux命令之clear - 清除终端屏幕,不是cls

    原文链接:http://codingstandards.iteye.com/blog/804213 用途说明 clear命令是用来清除终端屏幕的(clear the terminal screen), ...

  8. C# BackgroundWorker的Bug???

    废话不多说,上代码: public partial class Form1 : Form { BackgroundWorker _bgWorker; int count; public Form1() ...

  9. springboot 整合 rabbitmq

    http://blog.720ui.com/2017/springboot_06_mq_rabbitmq/

  10. Sql 常用的语句实例与代码

    在学习SQL的时候,本来预计花三天的时候掌握MS SQL这些基础,现在争取提前一天看完.总结沉底下来,其实也没有多少东西: 1.程序初始化前,先连接数据库 MFC程序中添加记录的代码: [cpp] v ...