Given a string containing just the characters '(', ')', '{', '}', '['
and ']', determine if the input string is valid.

An input string is valid if:

Open brackets must be closed by the same type of brackets. Open
brackets must be closed in the correct order. Note that an empty
string is also considered valid.

Example 1:

Input: "()" Output: true Example 2:

Input: "()[]{}" Output: true Example 3:

Input: "(]" Output: false Example 4:

Input: "([)]" Output: false Example 5:

Input: "{[]}" Output: true

正确的原则在于,需要关闭的时候最近的是匹配的,可以用栈来辅助实现

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

程浩
21 声望2 粉丝