题解 | #有效括号序列#

有效括号序列

https://www.nowcoder.com/practice/37548e94a270412c8b9fb85643c8ccc2

#include <iostream>
#include <algorithm>
#include <stack>

using namespace std;

struct Solution {
    bool isValid(string s) {
        if (s.size() % 2 != 0) return false;
        stack<char> st; //接收左括号对应的右括号

        for (int i = 0; i < s.size(); ++i) {
            switch (char ch = s[i]) { //判断左括号,压栈右括号
            case'[':
                st.push(']');
                break;
            case'{':
                st.push('}');
                break;
            case'(':
                st.push(')');
                break;
            default:
                if (!st.empty() && st.top() == ch)
                    st.pop();
                else //未先出现左括号或栈顶括号不匹配
                    return false;
            }
        }
        return st.empty(); //栈空即所有括号匹配
    }
};

int main() {
    string s;
    Solution S;

    while (cin >> s)
        cout << S.isValid(s);
    return 0;
}
全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务