您的位置:首页 > 其它

10、翻转句子中单词的顺序

2011-07-22 17:31 477 查看
第10 题
翻转句子中单词的顺序。
题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。
句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。
例如输入“I am a student.”,则输出“student. a am I”。

先对每个单词进行翻转,然后对整个句子进行翻转。
具体可以查看《编程珠玑》第二章

#include <iostream>
#include <cassert>

using namespace std;

template <typename T>
void reverse(T *arr, int left, int right)
{
T temp;

while(left < right)
{
temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
left++;
right--;
}
}

void reverseWholeString(char *str)
{
int length = strlen(str);

int left = 0;

while(left < length)
{
int right = left;

if (str[left] != ' ')
{
while((right < length) && str[right] != ' ')
right++;
reverse(str, left, right - 1);

left = right - 1;
}
left++;
}

reverse(str, 0, length - 1);
}

int main(void)
{
char str[] = "I am a student.";

reverseWholeString(str);

cout << str << endl;

system("Pause");

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: