1.字符串反转2
- 【问题描述】
- 【输入形式】
- 【输出形式】
- 【样例输入】
- 【样例输出】
- 题解
- 思路
- 代码1
- 代码2
【问题描述】
给定一个句子(只包含字母和空格), 将句子中的单词位置反转,单词用空格分割, 单词之间只有一个空格,前后没有空格。 比如: “hello xiao mi”-> “mi xiao hello”
【输入形式】
输入数据有多组,每组占一行,包含一个句子(句子长度小于1000个字符)
【输出形式】
对于每个测试示例,要求输出句子中单词反转后形成的句子
【样例输入】
hello xiao mi
I am a student
【样例输出】
mi xiao hello
student a am I
题解
思路
这个题和前面作业一做过的一道字符串反转很像,或者说更加简单…
- 1.我们同样用sstream拿到每个单词
- 2.1可以用vector存储reverse反转后输出
- 2.2可以直接用stack栈来存储,然后弹出就可以了
代码1
#include<iostream>
#include<string>
#include<sstream>
#include<vector>
#include<stack>
#include<algorithm>
using namespace std;
int main(){string s;while(getline(cin,s)){vector<string> res;stringstream ss;ss<<s;while(ss>>s){res.push_back(s);}reverse(res.begin(),res.end());for(int i=0;i<res.size();i++){cout<<res[i];if(i!=res.size()-1) cout<<" ";else cout<<endl; } }return 0;
}
代码2
#include<iostream>
#include<string>
#include<sstream>
#include<vector>
#include<stack>
#include<algorithm>
using namespace std;
int main(){string s;while(getline(cin,s)){vector<string> res;stringstream ss;ss<<s;stack<string> res_2;while(ss>>s){res_2.push(s);}while(res_2.size()){cout<<res_2.top()<<" ";res_2.pop(); }cout<<endl;}return 0;
}