423. Valid Parentheses【LintCode java】

Description

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

Example

The brackets must close in the correct order, "()" and "()[]{}" are all valid but "(]" and "([)]" are not.

Challenge

O(n)的时间,n为括号的个数

解题:括号匹配问题,用栈来做较为简单,代码如下:

public class Solution {
    /**
     * @param s: A string
     * @return: whether the string is a valid parentheses
     */
    public boolean isValidParentheses(String s) {
        // write your code here
        Stack<Character>stack = new Stack<Character>();
        for(int i = 0; i < s.length(); i++){
            if(s.charAt(i) == '(' || s.charAt(i) == '{' || s.charAt(i) == '['){
                stack.push(s.charAt(i));
            }else{ //pop前要先检查栈是不是空的
                if(!stack.isEmpty()){
                    switch(s.charAt(i)){
                    case ')':
                        if(!stack.pop().equals('(')){
                            return false;
                        }
                        break;
                    case ']':
                        if(!stack.pop().equals('[')){
                            return false;
                        }
                        break;
                    case '}':
                        if(!stack.pop().equals('{')){
                            return false;
                        }
                        break;
                    }
                }else{
                    return false;
                }
            }
        }
        if(stack.isEmpty()){
            return true;
        }else{
            return false;
        }
    }
}

猜你喜欢

转载自www.cnblogs.com/phdeblog/p/9330723.html
今日推荐