20. Valid Parentheses

Leetcode Diary

Posted by Xudong on July 16, 2020

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.

Thoughts

  • 使用stack的特性,遇到 '(', '{', '[' push, 遇到')', '}', ']' pop
  • 如果不对应则返回false
  • 遍历结束如果stack不为空则返回false
  • 其余情况返回true

Code(JAVA)

public boolean isValid(String s) {
    Stack<Character> stack = new Stack();
    for(int i = 0; i < s.length(); i++) {
        char c = s.charAt(i);
        if(c == '(' || c =='{' || c == '[') {
            stack.push(c);
            continue;
        }
        if(stack.isEmpty())
            return false;
        char p = stack.pop();
        if((c == ')' && p == '(') ||
           (c == '}' && p == '{') ||
           (c == ']' && p == '['))
            continue;
        else 
            return false;
    }
    return stack.isEmpty();
}