剑指Offer 1361 翻转单词顺序
2013-09-09 09:14
260 查看
九度:http://ac.jobdu.com/problem.php?pid=1361
10. 翻转句子中单词的顺序。
题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。
为简单起见,标点符号和普通字母一样处理。
例如输入“I am a student.”,则输出“student. a am I”。
10. 翻转句子中单词的顺序。
题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。
为简单起见,标点符号和普通字母一样处理。
例如输入“I am a student.”,则输出“student. a am I”。
#include <cstdlib> #include <iostream> #include <stdio.h> using namespace std; 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; } else if(*pEnd == ' ' || *pEnd == '\0') { //cout << "before: " << *pBegin << " " << *(pEnd-1) << endl; Reverse(pBegin, --pEnd); //cout << "after: " << *pBegin << " " << *pEnd << endl; pBegin = ++pEnd; } else { pEnd++; } } return pData; } int main() { /* char a[5001] = {"I am a student."}; char *pData = &a[0]; ReverseSentence(pData); cout << pData << endl; */ char *pData; char a[500001]; while(gets(a)) { pData = &a[0]; ReverseSentence(pData); //cout << pData << endl; puts(a); } return EXIT_SUCCESS; }
相关文章推荐
- 【剑指Offer面试编程题】题目1361:翻转单词顺序--九度OJ
- 【剑指Offer面试编程题】题目1361:翻转单词顺序--九度OJ
- 剑指Offer - 九度1361 - 翻转单词顺序
- 剑指offer 面试题42 翻转单词顺序 VS 左旋转字符串
- 剑指offer——面试题42-2:翻转单词顺序
- 剑指offer之面试题42翻转单词顺序VS左旋转字符串
- 剑指Offer面试题42:翻转单词顺序;左旋转字符串 Java实现
- 剑指offer面试题42_1翻转单词顺序(java实现)
- [剑指offer][面试题42]翻转单词顺序 VS 左旋转字符串
- 剑指offer翻转单词顺序空格处理
- 剑指 offer set 19 翻转单词顺序 && 字符串左旋
- 【剑指offer】之翻转单词顺序
- 【剑指Offer学习】【面试题42:翻转单词顺序vs左旋转字符串】
- 剑指offer——44.翻转单词顺序序列
- 剑指offer-翻转单词顺序
- 【剑指offer】面试题58(1):翻转单词顺序
- 剑指offer之翻转单词顺序(翻转句子,但组成句子的单词内部有序)
- 剑指Offer学习总结-翻转单词顺序
- 剑指offer-翻转单词顺序
- 剑指offer-42 翻转单词顺序