题目一
输入:abcd
输出:dcbd
思路1:直接将输入的字符串存放起来,然后通过索引实现反序输出
思路2:将字符串存入栈结构,然后输出
思路1:
#include<iostream>
#include<string>
using namespace std;
int main() {
string s;
while (cin>>s) {
int len = s.length();
for (int i = 0; i < len; i++) {
cout << s[len-i-1];
}
}
return 0;
}
思路2
//数组实现栈结构
#include<iostream>
#include<stack>
#include<string>
using namespace std;
int main() {
stack<char>sta;
string s;
while (cin >>s ) {
for (int i = 0; i < s.length(); i++) {
sta.push(s[i]);
}
while (sta.size()) {
cout << sta.top();
sta.pop();
}
cout << endl;
}
}
题目二
输入:I am a boy
输出:boy a am I
思路,首先创建一个栈,栈里面是一个容器,容器存放的数据类型是char类型的
使用getline获取整行输入,然后将空格前的字符分别存放进容器中,最后弹栈输出即可
扫描二维码关注公众号,回复: 5648610 查看本文章
//数组实现栈结构
#include<iostream>
#include<vector>
#include<stack>
#include<string>
using namespace std;
int main() {
string s;
while (getline(cin,s)) {
stack<vector<char>> v;//创建栈结构存放容器,容器里面存放的是字符类型
vector<char> sub_v;//创建字符类型的容器
for (int i = 0; i < s.length(); i++) {
if (s[i] != ' ') {
sub_v.push_back(s[i]);//只要不为空,就将该字符放入容器中
}
else {
v.push(sub_v);//如果为空就将该字符类型的容器入栈
sub_v.clear();//然后清空该容器
}
}
v.push(sub_v);//因为刚才入栈的条件是字符为空,所以最后一个容器还没有入栈
sub_v.clear();//再清空容器
while (v.size()) {
vector<char> temp = v.top();//用一个容器存放栈顶的容器,然
for (int i = 0; i < temp.size(); i++) {
cout << temp[i];
}
if (v.size() != 1) {
cout << ' ';
}
v.pop();
}
cout << endl;
}
}