Question URL

题目大意

判断(){}[]是否合理

解题思路

使用一个栈来存左括号,在遇到右括号的时候与栈顶括号进行配对,如果成功则退栈,否则返回false;如果遇到右括号时栈空,返回false;如果扫描到最后栈是空的,返回true。

class Solution {
public:
    bool isValid(string s) {
        stack<char> st;
        for (int i = 0; i < s.size(); i++) {
            if (s[i] == '(' || s[i] == '[' || s[i] == '{') 
                st.push(s[i]);
            else if (s[i] == ')' || s[i] == ']' || s[i] == '}') {
                if (st.size() == 0)
                    return false;
                if (abs(s[i] - st.top()) <= 2)
                    st.pop();
                else
                    return false;
            }
        }
        if (st.size() == 0)
            return true;
        return false;
    }
};