20. Valid Parentheses

一、题目

  1、审题

    

   2、分析:

    返回括号组成的字符串其中的括号是否都能正确闭合。

 

二、解答

  1、分析:

    方法一:

      用栈实现。

      左括号进栈;

      右括号时栈顶出栈并判断是否匹配。最终判断栈是否为空即可。

  

class Solution {
    public boolean isValid(String s) {

        Stack<Character> stack = new Stack<Character>();
        int len = s.length(), index = 0;

        while(index < len) {
            char c = s.charAt(index++);
            if(c == '(' || c == '[' || c == '{')
                stack.push(c);
            else if(c == ')') {
                if(!stack.isEmpty() && stack.peek() == '(')
                    stack.pop();
                else
                    return false;
            }
            else if(c == ']') {
                if(!stack.isEmpty() && stack.peek() == '[')
                    stack.pop();
                else
                    return  false;
            }
            else if(c == '}') {
                if(!stack.isEmpty() && stack.peek() == '{')
                    stack.pop();
                else
                    return false;
            }
        }

        return  stack.isEmpty();
    }
}

 

    方法二:

      用栈实现。

      左括号时,入栈对应的右括号;

      右括号时,栈顶出栈并判断是否与该右括号一致

  

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

        return stack.isEmpty();
    }
}

 

posted @ 2018-08-03 09:15  skillking2  阅读(144)  评论(0编辑  收藏  举报