将字符串单词顺序颠倒
先逐个翻转单词,然后整体翻转
注意可能连续出现空格如:” a bc de “
#include <iostream>
using namespace std;
void print(char * s)
{
while (*s!='\0')
{
cout << *s++;
}
cout << endl;
}
void ReverseWord(char* left, char* right)
{
while (left<right)
{
std::swap(*left, *right);
left++;
right--;
}
}
void Reverse(char * str)
{
if (str==NULL|| *str=='\0')//异常输入
{
return;
}
char *s = str;
while (*s==' ')//句首空格
{
s++;
}
char * left = s;
char * right = s;
while (*right!='\0')
{
if (*right==' ')
{
ReverseWord(left, right - 1);
while (*right==' ')//连续空格
{
right++;
}
left = right;
}
else
{
right++;
}
}
ReverseWord(left, right - 1);
ReverseWord(str, right - 1);
}
int main()
{
char str[1024];
gets_s(str);
Reverse(str);
print(str);
return 0;
}