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

有效字符串需满足:

左括号必须用相同类型的右括号闭合。

左括号必须以正确的顺序闭合。

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

示例 1:

输入: "()"

输出: true

示例 2:

输入: "()[]{}"

输出: true

示例 3:

输入: "(]"

输出: false

示例 4:

输入: "([)]"

输出: false

示例 5:

输入: "{[]}"

输出: true


class Solution {
    public boolean isValid(String s) {
        int len = s.length();
        if(s=="") return false;
        Stack<Character> stack = new Stack<Character>();
        char c;
        for(int i=0; i<len; i++)
        {
            if(s.charAt(i)=='(' || s.charAt(i)=='{' || s.charAt(i)=='[') {
                stack.push(s.charAt(i));
            } else if(!stack.empty()) {
				c = stack.pop();
                switch (s.charAt(i)) {
                    case ')':
                        if(c != '(') return false;
                        break;
                    case ']':
                        if(c != '[') return false;
                        break;
                    case '}':
                        if(c != '{') return false;
                        break;
                    default: return false;
                }
			} else return false;
        }
        if(stack.empty()) return true;
        return false;
    }
}

LeetCode 原题传送门

Q.E.D.


知识的价值不在于占有,而在于使用