将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I”
所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
void RevStr(char *str)
{
int k = 0;
int i = 0;
int j = 0;
if(str == nullptr)
{
return ;
}
int len = strlen(str);
//先对整体进行反转
for(i = 0; i < len / 2; i++)
{
swap(str[i], str[len - i - 1]);
}
//再对每个单词进行反转
while(k < len)
{
i = j = k;
while(str[j] != ' ' && str[j] != '\0')
{
j++;
}
k = j + 1; //跳过空格
for(j = j - 1; i < j; j--, i++)
{
swap(str[i], str[j]);
}
}
}
int main()
{
char a[5000];
cin.getline(a,5000);
RevStr(a);
cout<<a<<endl;
return 0;
}
本文由 Ryan 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为:
2019/07/28 15:13