1. 程式人生 > >20:Valid Parentheses【棧】【字串】

20:Valid Parentheses【棧】【字串】

/*題意:括號配對*/

/**
 *思路:遍歷整個字串
 *      1)遇到的字元為左括號時,直接壓入棧中
 *      2)遇到的字元為右括號時,且棧不為空,判斷是否和棧中括號匹配
 *        匹配則刪除棧頂元素
 *      3)其它情況,返回false
 */


class Solution {
public:
    bool isValid(string s) {
        int len = s.size();
        if(len == 0) return true;
        stack<char> st;
        for(int i = 0; i < len; i ++) {
            if(s[i] == '(' || s[i] == '[' || s[i] == '{')
                st.push(s[i]);
            else if( !st.empty() &&   //先判斷棧是否為空
                     ( (st.top() == '(' && s[i] == ')') ||
                       (st.top() == '[' && s[i] == ']') ||
                       (st.top() == '{' && s[i] == '}')
                     )
                   )
                   {st.pop();}
            else
                return false;
        }
        return st.empty(); //最有要判斷棧是否為空
    }
};