【剑指offer】翻转单词顺序
转载请注明出处: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】翻转单词顺序的更多相关文章
- 剑指offer——翻转单词顺序VS左旋转字符串
字符串的交换等,注意判断字符串的是否为NULL,以及判断边界等. #include <iostream> #include <string> using namespace s ...
- 剑指Offer——翻转单词顺序列
题目描述: 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上.同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思.例如,“studen ...
- 剑指OFFER——调整数组顺序使奇数位于偶数前面
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变. 剑指offer书里的版本, ...
- 剑指Offer-44.翻转单词顺序列(C++/Java)
题目: 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上.同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思.例如,“student. ...
- 剑指offer--40.翻转单词顺序列
时间限制:1秒 空间限制:32768K 热度指数:276854 本题知识点: 字符串 题目描述 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上.同事Cat对Fish写 ...
- 剑指Offer-翻转单词顺序
题目描述: 输入一个英文句子,翻转句子中单词的顺序,但单词内字符串的顺序不变.例如输入字符串:"I am a student",则输出"student a am I&qu ...
- 剑指Offer 调整数组顺序使奇数位于偶数前面
题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变. 思路: ...
- 剑指Offer41 反转单词顺序,单词字符顺序不变
/************************************************************************* > File Name: 41_Revers ...
- 用js刷剑指offer(调整数组顺序使奇数位于偶数前面)
题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变. 牛客网链接 js代码 ...
- 剑指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 ...
随机推荐
- 算法笔记_138:稳定婚姻问题(Java)
目录 1 问题描述 2 解决方案 1 问题描述 何为稳定婚姻问题? 有一个男士的集合Y = {m1,m2,m3...,mn}和一个女士的计划X = {n1,n2,n3,...,nn}.每一个男士有 ...
- 算法笔记_038:特殊回文数(Java)
目录 1 问题描述 2 解决方案 2.1 80分解法 2.2 网友标答解法 1 问题描述 问题描述 123321是一个非常特殊的数,它从左边读和从右边读是一样的. 输入一个正整数n, 编程求所有这 ...
- 搭建ssm+maven环境遇到的问题
1. @RunWith(SpringJUnit4ClassRunner.class) gives error 在使用junit测试过程中 2.com.google.gson.JsonIOExcepti ...
- QtGui.QSplitter
A QtGui.QSplitter lets the user control the size of child widgets by dragging the boundary between t ...
- Java之逆向工程(1) - 反编译、修补和逆向工程技术 读书笔记
透视JAVA——反编译.修补和逆向工程技术 读书笔记 1. Java source is not compiled to binary machine code like C/C++ source ...
- Java中被你忽视的四种引用(转)
转载自:http://blog.csdn.net/u010425776/article/details/50760053 Java的数据类型分为两类:基本数据类型.引用数据类型. 基本数据类型的值存储 ...
- KeyboardJS - "构建你的应用吧,我会处理按键"
KeyboardJS - "构建你的应用吧,我会处理按键" 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业 ...
- 不经意的小错误——onclick和click的区别
可能注意不到的错误,编写jquery时发现没有自己想要的效果,结果通过代码比对软件才发现原来将click写成了onclick,虽然看着差不多,但意义却不相同,简单区别如下: $().click() 是 ...
- WebService一些概念
1.WebService,顾名思义就是基于Web的服务.它使用Web(HTTP)方式,接收和响应外部系统的某种请求.从而实现远程调用. 2.我们可以调用互联网上查询天气信息Web服务,然后将它嵌入到我 ...
- Zookeeper研究和应用
http://www.searchtb.com/2011/01/zookeeper-research.html zookeeper简介 zookeeper是一个开源分布式的服务,它提供了分布式协作,分 ...