给定一个字符串,按单词将该字符串逆序,
比如给定"I LOVE YOU",则输出是"YOU LOVE I",为了简化问题,字符串中不包含标点符号。

分两步

1 先按单词逆序得到"I EVOL UOY"

2 再整个句子逆序得到"YOU LOVE I"
#include <iostream>
#include <cstring>
using namespace std;
//将p->q之间包含的单词 逆序
void ReverseWord(char*p, char* q)
{
while(p< q)
{
char temp =*p;
*p++ = *q;
*q-- = temp;
}
}
void ReverseTotal(char* src)
{
// 这两个指针用来确定一个单词的首尾边界
char* p=src;//指向单词的首字符
char* q=src;// 指向空格或者 '\0'
while(*q !='\0')
{
if(*q==' ')
{
ReverseWord(p, q-1);
q++;// 指向下一个单词首字符
p=q;
}
else
{
q++;
}
}
ReverseWord(p,q-1); // 对最后一个单词逆序
ReverseWord(src,q-1);// 对整个句子逆序
}
int main()
{
char src[]={"I LOVE YOU"};
ReverseTotal(src);
cout<<src<<endl;
return 0;
}

字符串逆序