题目
输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student.",则输出"student. a am I"。
C 语言题解
第一步翻转句子中所有的字符。比如翻转"I am a student."中所有的字符得到".tneduts a ma I",此时不但翻转了句子中单词的顺序,连单词内的字符顺序也被翻转了。
第二步再翻转每个单词中字符的顺序,就得到了"student.a am I"。
char* reverseWords(char *pData)
{
// 检查输入的合法性
if (pData == NULL)
return NULL;
char *pBegin = pData;
char *pEnd = pData;
while (*pEnd != '\0')
pEnd++;
// 此处需要注意,因为末尾处在'\0',所以需要向前一个位置
pEnd--;
// 首先翻转整个句子
Reverse(pBegin, pEnd);
// 遍历整个字符串,翻转句子中的每个单词
pBegin = pEnd = pData;
while (*pBegin != '\0')
{
// 前指针遇到空格,两个指针同时前进
if (