给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。
输入格式:
测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用 1 个空格分开,输入保证句子末尾没有多余的空格。
输出格式:
每个测试用例的输出占一行,输出倒序后的句子。
输入样例:
Hello World Here I Come
输出样例:
Come I Here World Hello
两种方法
1.同1008进行字符串翻转
先对每一个单词翻转,再对整个字符串翻转
2.用getline读取一行再对整个字符串
用stringstream读取每个单词放在数组vector里<sstream>
对数组逆序输出即可
Ⅰ.
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int main()
{
string s;
getline(cin, s);
for (int i = 0; i < s.size();)
{
int j = i;//双指针遍历(单词的首末)
while (j < s.size() && isalpha(s[j]))j++;
reverse(s.begin() + i, s.begin() + j);
i = j + 1;
}
reverse(s.begin(), s.end());
cout << s << endl;
return 0;
}
Ⅱ.
#include<iostream>
#include<string>
#include<algorithm>
#include<vector>
#include<sstream>
using namespace std;
int main()
{
vector<string> res;
string s;
getline(cin, s);
stringstream ss;//把s放在stringstream里以便读取单词
while (ss>>s)//读取s中的单词直到'/0'
{
res.push_back(s);//把读取到的每一个单词放在res中(注意:此时是没有空格的)
}
reverse(res.begin(), res.end());
s = "";
for (auto x :res)
{
s += x + " ";
}
s.pop_back();//去掉最后一个空格
cout << s << endl;
return 0;
}
运行结果如下:
Hello World Here I Come
Come I Here World Hello