给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。
输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过80的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用1个空格分开,输入保证句子末尾没有多余的空格。
输出格式:每个测试用例的输出占一行,输出倒序后的句子。
输入样例:
Hello World Here I Come
输出样例:
Come I Here World Hello
解法一
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str[10];
getline(cin, str[0]);
decltype(str[0].size()) j = 1;
for (decltype(str[0].size()) i = 0; i < str[0].size(); i++) {
if (!isspace(str[0][i]))
str[j] += str[0][i];
else j++;
}
for (decltype(str[j].size()) i = j; i > 0; i--) {
cout << str[i];
if (i != 1)
cout <<" ";
}
return 0;
}
解法二
#include<string>
#include<iostream>
#include<vector>
using namespace std;
int main() {
string s,r;
vector<string> v;
getline(cin, s);
for (decltype(s.size()) index = 0; index != s.size(); index++) {
if(!isspace(s[index]) ){
r += s[index];
}
else {
v.push_back(r);
r.clear();
}
}
v.push_back(r);
for (auto rit = v.rbegin();rit !=v.rend(); rit++)
{
cout << *rit;
if (rit != v.rend() - 1) cout << " ";
}
return 0;
}
解法三
#include <iostream>
#include <string>
#include<sstream>
#include<vector>
using namespace std;
int main()
{
string line,s;
vector<string> v;
bool firstword = true;
getline(cin, line);
istringstream stream(line);
while(stream>>s)
v.push_back(s);
for (auto rit = v.rbegin(); rit != v.rend(); rit++)
{
if (firstword)
firstword = false;
else
cout << " ";
cout << *rit;
}
}