Jared0503 @ 2024-01-21 21:53:07
代码附上
#include<bits/stdc++.h>
using namespace std;
stack<char> op;
stack<int> num;
string s="",b="";
char a;
int i;
int main()
{
while(cin>>a)
{
s=s+a+' ',i++;
if(a=='['||a=='(') op.push(a),num.push(i); //左括号无匹配,故将其入op和num(下标)的栈
else
{
if(op.top()=='('||op.top()=='[') op.pop(),num.pop(); //右括号有匹配,故将op和num(下标)栈顶弹出
else op.push(a),num.push(i); //右括号无匹配,故将其入栈
}
}
//0123
//([()
//op:([
//num:01
//(num.top()+1)*2-1
//s:( [ ( )
//下标3加],下标1加)
while(!op.empty())
{
cout<<op.top()<<' '<<num.top()<<endl;
op.pop(),num.pop();
// a=op.top();
// if(a=='[') s[num.top()*2-1]=']';
// else s[num.top()*2-1]=')';
// op.pop(),num.pop();
}
for(int i=0;i<s.size();i++) if(s[i]!=' ') b+=s[i];
cout<<b;
}
by Jared0503 @ 2024-01-21 21:56:22
问一下各位dalao,有没有什么办法可以处理对于类似``` ([)
这样的样例的方法啊
by shuibowenzuishuai @ 2024-01-21 22:03:58
我知道
by shuibowenzuishuai @ 2024-01-21 22:06:04
reverse试试