翻转单词顺序
来源:互联网 发布:b2b 建站 教程 编辑:程序博客网 时间:2024/05/16 08:05
前言
题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。例如输入字符“student. a am I”,输出为"I am a student.".这个题目很常见,据说很多公司都多次拿来作面试题目。这里主要是因为网上很多相关代码都是照抄何海涛的《剑指offer》,c++风格的代码无法接受,所以这里贴出我的ac代码
思路
这个题目的思路比较简单,分两步即可:
- 翻转句子中所有的字符,例如翻转“student. a am I”中所有的字符得到“I ma a .tneduts”,此时不但翻转了句子中的单词的顺序,连单词内的字符顺序也被翻转了
- 再翻转每个单词中字符的顺序,就得到“I am a students.”了
字符串翻转的代码实现很简单,我贴出我写的c代码:
void reverse_word(char *str, int begin, int end){char temp;while (begin < end) {temp = *(str + begin);*(str + begin) = *(str + end);*(str + end) = temp;begin ++;end --;}}
示例
题目描述:JOBDU最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?输入:每个测试案例为一行,表示一句英文句子。我们保证一个句子的单词数不会超过600,每个单词的长度也不会超过30。但是需要注意的是Fish是个不拘小节的人,有时候两个单词中间可能会有很多空格。为了方便起见,你可以认为一行的字符总数不会超过50000个,标点符号可以和普通字母一样处理。输出:对应每个测试案例,把翻转后的正确的句子单独输出一行。样例输入:student. a am II'm a Freshman and I like JOBDU!样例输出:I am a student.JOBDU! like I and Freshman a I'm
ac代码
#include <stdio.h>#include <string.h> void reverse_word(char *str, int begin, int end); int main(void){ int st, ed, len; char str[50001]; while (gets(str)) { len = strlen(str); reverse_word(str, 0, len - 1); for (st = ed = 0; ed < len;) { while (*(str + ed) != ' ' && *(str + ed) != '\0') { ed ++; } reverse_word(str, st, ed - 1); st = ed; while (*(str + st) == ' ') { st ++; } ed = st; } puts(str); } return 0;} void reverse_word(char *str, int begin, int end){ char temp; while (begin < end) { temp = *(str + begin); *(str + begin) = *(str + end); *(str + end) = temp; begin ++; end --; } }/************************************************************** Problem: 1361 User: wangzhengyi Language: C Result: Accepted Time:50 ms Memory:912 kb****************************************************************/
- 翻转单词顺序
- 翻转单词顺序
- 翻转单词顺序
- 翻转单词顺序
- 翻转单词顺序
- 翻转单词顺序
- 【7】翻转单词顺序
- 翻转单词顺序
- 翻转单词顺序
- 翻转单词顺序列
- 翻转单词顺序列
- 翻转单词顺序
- 翻转单词顺序列
- 翻转单词顺序列
- 翻转单词顺序列
- 翻转单词顺序列
- 翻转单词顺序
- 翻转单词顺序列
- 黑马程序员 java Lock的使用
- linux驱动学习--第九天:第五章 Linux 文件系统与设备文件系统(三) 之 file 结构体 和 inode 结构体
- python 输出彩色文字
- JAVA--基础加强_动态代理
- poj 2109 【贪心?】
- 翻转单词顺序
- OpenCV 2.4.4 + VS2012的配置
- 网络应用
- 六个很常用的MySQL可视化工具推荐
- 开发人员眼中IOS7
- libsvm的版本引出的问题
- libpcap的使用
- poj 1936 All in All 【串】
- js定位光标到输入框指定位置