首页 > 试题广场 >

程序完善题: 括号匹配。 假设一个算术表达式中可

[问答题]
程序完善题:
括号匹配。

假设一个算术表达式中可以包含两种括号:圆括号"(" 和 ")",方括号"["和"]",且这两种括号可按任意的次序嵌套使用(如:…[…(…)…[…]…]…[…]…(…)…)。编写判别给定字符串中所含括号是否正确配对出现的算法。

例如 “[][]{[{}[]]}”是一个合法的字符串,“[][]{[{][]]}”是一个非法的字符串

bool check(const char* s) {

    int len = strlen(s);

    stack<char> st;

    for (int i = 0; i < len; i++) {

        char c = s[i];

        if (c == '(' || c == '[')

            st.push(c);

        else {

            assert(c == ')' || c == ']');

            if (st.empty()) return            ;

            char t = st.top();

            if(c == ')') {

                if (t ==    ) st.pop();

                else break;

            } else if (c == ']') {

                if (t ==     ) st.pop();

                else break;

            }

        }

    }

    return       ;

}

这道题你会答吗?花几分钟告诉大家答案吧!