字符串的反转输出

 题目一

输入: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;
		
	}
}


 

猜你喜欢

转载自blog.csdn.net/Li_haiyu/article/details/88565922