求救

P1241 括号序列

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试试


|