【LeetCode】Valid Parentheses(有效的括号)

这道题是LeetCode里的第20道题。

题目要求:

给定一个只包括 '('')''{''}''['']' 的字符串,判断字符串是否有效。

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。

注意空字符串可被认为是有效字符串。

示例 1:

输入: "()"
输出: true

示例 2:

输入: "()[]{}"
输出: true

示例 3:

输入: "(]"
输出: false

示例 4:

输入: "([)]"
输出: false

示例 5:

输入: "{[]}"
输出: true

这还用想吗?堆栈无脑解题!!!左括号进栈,右括号判断并出栈。

题解代码:

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

提交结果:

个人总结:

啥都没有,但是得贴个 python 的解法:

class Solution:
    def isValid(self, s):
        while '{}' in s or '()' in s or '[]' in s:
            s = s.replace('{}', '')
            s = s.replace('[]', '')
            s = s.replace('()', '')
        return s == ''

python 真是简洁啊!

posted @ 2019-03-16 10:21  1000sakura  阅读(100)  评论(0编辑  收藏  举报