面试经典(1)---翻转句子中单词的顺序
来源:互联网 发布:何兆武 知乎 编辑:程序博客网 时间:2024/05/16 12:53
题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。
例如输入“I am a student.”,则输出“student. a am I”。
由于本题需要翻转句子,我们先颠倒句子中的所有字符。这时,不但翻转了句子中单词的顺序,而且单词内字符也被翻转了。我们再颠倒每个单词内的字符。由于单词内的字符被翻转两次,因此顺序仍然和输入时的顺序保持一致。这个题目其实着重考察的逻辑思维,
void Reverse(char *pBegin, char *pEnd){if(pBegin == NULL || pEnd == NULL)return;while(pBegin < pEnd){char temp = *pBegin;*pBegin = *pEnd;*pEnd = temp;pBegin ++, pEnd --;}}char* ReverseSentence(char *pData){if(pData == NULL)return NULL;char *pBegin = pData;char *pEnd = pData;while(*pEnd != '\0')pEnd ++;pEnd--;Reverse(pBegin, pEnd);pBegin = pEnd = pData;while(*pBegin != '\0'){//跳过空格if(*pBegin == ' '){pBegin ++;pEnd ++;continue;}// A word is between with pBegin and pEnd, reverse itelse if(*pEnd == ' ' || *pEnd == '\0'){Reverse(pBegin, --pEnd);pBegin = ++pEnd;}else{pEnd ++;}}return pData;}
0 0
- 面试经典(1)---翻转句子中单词的顺序
- 【经典算法】:翻转句子中单词的顺序
- 经典面试题:翻转英文句子中单词的顺序
- 面试100题:10.翻转句子中单词的顺序
- 面试100题:10.翻转句子中单词的顺序
- 翻转句子中单词的顺序
- 翻转句子中单词的顺序
- 翻转句子中单词的顺序
- 翻转句子中单词的顺序
- 翻转句子中单词的顺序
- 翻转句子中单词的顺序
- 10.翻转句子中单词的顺序
- 翻转句子中单词的顺序
- 10、翻转句子中单词的顺序
- 翻转句子中单词的顺序
- 翻转句子中单词的顺序
- 翻转句子中单词的顺序
- 翻转句子中单词的顺序
- HDU 2818 Building Block 带权并查集
- TEST:拍手游戏
- 认识Selenium ---selenium RC简介
- Java——复习
- C++:静态联编和动态联编
- 面试经典(1)---翻转句子中单词的顺序
- (每日一java)ComputeChange
- eclipse导入php项目
- sag_max_size与sga_target区别与联系,以及不同版本下sga_target的简略讨论。
- C++之运算符重载
- git 权限解决
- python数据结构与算法 31 选择排序
- spring使用Annotation进行声明式事务管理
- Lua 常用的数学库函数