此题的题解(by Zhouzixian3007)
查看原帖
此题的题解(by Zhouzixian3007)
1373964
Zhouzixian3007楼主2024/7/1 19:12

创作背景:啊?啊?这道题目通不过?才80分?啊?为什么?啊?怎么做才能通过?

解题思路:先定义一个栈(用STL版本,类型为string)、n、字符串(string)数组和一个string类型的字符串。也许有人会问为什么,下面由我来揭晓吧。(定义栈时,用stack 栈名,n为int类型)①输入n。②输入单字符串,边输入边执行③,重复n次。③判断一下,如果输入的字符串是“”,那么删除最后面的字符串(用栈即可弹掉最上面的元素,如果栈为空则不进行此操作),否则加到栈中(把此元素压进栈中)。(用栈最容易弹掉字符串最后的字母。判断栈不为空用STL函数:!栈名.empty();弹掉栈顶元素用STL函数:栈名.pop();把元素插入到栈中庸STL函数:栈名.push(元素))④将栈的元素存到字符串数组里面。(过程:存入一个字符串到数组里,再弹掉栈顶元素)⑤倒序输出字符串数组即可结束。

C++程序:

#include <bits/stdc++.h>
using namespace std;
string str[101];
int main() {
	int n, k = 0;
	stack <string> sc;
	cin >> n;
	while (n--) {
		string t;
		cin >> t;
		if (t == "<bs>") {
			if (!sc.empty())
				sc.pop();
		}	
		else sc.push(t);
	}
	while (!sc.empty()) {
		str[++k] = sc.top();
		sc.pop();
	}
	for (int i = k; i >= 1; i--)
		cout << str[i];
	return 0;
}

如果你有其他疑问,请回复我,到时候我会看。感谢你的收看、帮助与支持。(做这个帖子,花费了我很长时间……)

2024/7/1 19:12
加载中...