将一句话里的单词进行倒置,标点符号不倒置。比如一句话:i come from beijing.倒置后变成:beijing. from come i
//解析:解决该问题可以分为两步:第一步全盘置换该语句成:.gnijieb morf emoc i。第二步进行部分翻转,如果不是空格,则开始翻转单词。
#include <iostream>
using namespace std;
int main ()
{
int i=0, j=0,begin, end;
char str[] = "i come from beijing.";
char temp;
j = strlen(str) - 1;
//第一步是进行全盘翻转
while(j>i)
{
temp = str[i];
str[i++] = str[j];
str[j--]=temp;
}
//第二步进行部分翻转
i=0;
while(str[i])
{
if(str[i] != ' ')
{
begin = i;
while(str[i] && str[i] != ' ')
i++; //找到str[i]为空格符
i = i - 1; //空格符回退一个
end = i;
}
while(end > begin) //部分翻转
{
temp = str[begin];
str[begin++] = str[end];
str[end--] = temp;
}
i++;
}
cout << "string:" << str << endl;
}