lintcode-423-有效的括号序列

423-有效的括号序列

给定一个字符串所表示的括号序列,包含以下字符: '(', ')', '{', '}', '[' and ']', 判定是否是有效的括号序列。

样例

括号必须依照 "()" 顺序表示, "()[]{}" 是有效的括号,但 "([)]"则是无效的括号。

标签

栈 谷歌

思路

使用栈进行括号匹配,遍历括号串,遇到左括号 '(' , '{' 和 ']' 则将其入栈,遇到右括号 ')', '}' 和 ']' 则与栈顶元素匹配,若括号匹配,弹出栈顶元素并继续匹配,否则匹配出错;
若括号串遍历结束,此时栈中还有元素,表示有左括号无法比配,匹配出错,否则所有括号已经正确匹配。

code

class Solution {
public:
    /*
     * @param s: A string
     * @return: whether the string is a valid parentheses
     */
    bool isValidParentheses(string s) {
        // write your code here
        int size = s.size();
        if (size <= 0) {
            return true;
        }
        stack<char> stack;
        for (int i = 0; i < size; i++) {
            if (s[i] == '(' || s[i] == '[' || s[i] == '{') {
                stack.push(s[i]);
            }
            else if (s[i] == ')' || s[i] == ']' || s[i] == '}') {
                char top = stack.top();
                if ((s[i] == ')' && top == '(') || (s[i] == ']' && top == '[') || (s[i] == '}' && top == '{')) {
                    stack.pop();
                }
                else {
                    return false;
                }
            }
        }
        if (!stack.empty()) {
            return false;
        }
        return true;
    }
};
posted @ 2017-08-16 21:56  LiBaoquan  阅读(420)  评论(0编辑  收藏  举报