zoukankan      html  css  js  c++  java
  • 20. Valid Parentheses

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

    An input string is valid if:

    1. Open brackets must be closed by the same type of brackets.
    2. 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

    use stack. for each character in input string:

    (1) if current char is a open bracket, push it into the stack;

    (2) if it's a close bracket: 

      (2.1) if stack is empty, return false directly; 

      (2.2) if current char does not match the top element of the stack, return false. (remember to pop the top element if matches)

    (3) finally, if stack is empty return true, else return false

    time = O(n), space = O(n)

    class Solution {
        public boolean isValid(String s) {
            LinkedList<Character> stack = new LinkedList<>();
            for(int i = 0; i < s.length(); i++) {
                char c = s.charAt(i);
                if(c == '(' || c == '{' || c == '[') {
                    stack.push(c);
                } else {
                    if(stack.isEmpty()) {
                        return false;
                    } else if(c == ')' && stack.pop() != '(') {
                        return false;
                    } else if(c == '}' && stack.pop() != '{') {
                        return false;
                    } else if(c == ']' && stack.pop() != '[') {
                        return false;
                    }
                }
            }
            return stack.isEmpty();
        }
    }
  • 相关阅读:
    hdu 2639 Bone Collector II
    文件打包bundle
    iOS UITextField垂直居中
    Mac删除废纸篓中的单一文件和文件夹
    Swift 初见
    关于 Swift
    NSString和NSDate的转换
    iOS开发之iOS7设置状态栏字体颜色
    在当前界面中隐藏状态栏
    适合所有测试人员读的书籍
  • 原文地址:https://www.cnblogs.com/fatttcat/p/11132773.html
Copyright © 2011-2022 走看看