【力扣-简单】20. 有效的括号

给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。

示例 1:
输入: "()"
输出: true
示例 2:
输入: "()[]{}"
输出: true
示例 3:
输入: "(]"
输出: false
示例 4:
输入: "([)]"
输出: false
示例 5:
输入: "{[]}"
输出: true

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/valid-parentheses

【栈】

    public boolean isValid(String s) {
        char[] ss = s.toCharArray();
        Stack stack = new Stack<>();
        for (char c : ss) {
            if (c == '(') stack.push(')');
            else if (c == '[') stack.push(']');
            else if (c == '{') stack.push('}');
            else if (stack.empty() || c != stack.peek()) return false;
            else stack.pop();
        }
        return stack.empty();
    }

【数组】

数组更快
 

public boolean isValid(String s) {
char[] tag = new char[s.length()];
        int i = 0;
        for (char c : s.toCharArray()) {
            switch (c){
                case '(':tag[i++] = ')';break;
                case '[':tag[i++] = ']';break;
                case '{':tag[i++] = '}';break;
                default:
                    if (i == 0 || c != tag[i-1]) return false;
                    else i--;
            }
        }
        return i == 0;
    }

 

你可能感兴趣的:(leecode,leetcode,算法,java)