20.Valid Parentheses

左右括号匹配问题

方法:

1.将左括号存入队列,出现一个右括号便开始匹配。(存左匹右)

2.出现一个左括号便添加一个右括号进队列,出现一个右括号便匹配消去。(存右匹右)

代码1:

boolisValid(strings) {

    map<char,char>brackets={{'{','}'},{'[',']'},{'(',')'}};

    vector<char>stack;

    for(inti=0;i

    {

        cout<

        if(!stack.empty())

           cout<

        if(!stack.empty() &&  brackets[stack.back()]==s[i])

        {

            stack.pop_back();

            cout<<"pop"<

        }

        elseif(s[i]==')'||s[i]=='}'||s[i]==']')

        {

            cout<<"false";

            returnfalse;

        }

        else

        {

            stack.push_back(s[i]);

            cout<<"push"<

        }

    }

    if(stack.empty())

        return true;

    return false;

}

代码2:

boolisValid1(strings) {

    vector<char>stack;

    for(inti=0;i

    {

        if(s[i]=='(')

        {

            stack.push_back(')');

        }

        elseif(s[i]=='[')

        {

            stack.push_back(']');

        }

        elseif(s[i]=='{')

        {

            stack.push_back('}');

        }

        elseif(!stack.empty() && stack.back()==s[i])

        {

            stack.pop_back();

        }

        else

            returnfalse;

    }

    if(stack.empty())

       return true;

    return false;

}

你可能感兴趣的:(20.Valid Parentheses)