创作背景:啊?啊?这道题目通不过?才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;
}
如果你有其他疑问,请回复我,到时候我会看。感谢你的收看、帮助与支持。(做这个帖子,花费了我很长时间……)