【LeetCode】20. Valid Parentheses

题目:

思路:用Stack基本操作完成。

要检测输入字符是否满足这个条件,一个非常合适的数据结构是stack,后进先出的特征正好满足检测的需求。在检测的时候,每次检查一个字符,如果是左括号,就入栈,如果是右括号,并且右括号和当前栈顶符号是左右配对的,那么就弹出栈顶并且进行下一次检测,如果不满足上面两种情况,就说明检查到了一个非法字符,返回false.

public class Solution {
    public boolean isValid(String s) {
        if(s.length()==0){
            return true;
        }
        Stack<Character> st=new Stack<Character>();
        st.push(s.charAt(0));
        for(int i=1;i<s.length();i++){
            if(!st.empty()&&isMatch(st.peek(),s.charAt(i))){
                st.pop();
            }else
                st.push(s.charAt(i));
        }
        if(st.empty()){
            return true;
        }
        return false;
    }
    
    public static boolean isMatch(char s,char p){
        if((s=='('&&p==')')||(s=='['&&p==']')||(s=='{'&&p=='}')){
            return true;
        }else
            return false;
    }
}

 

posted on 2016-11-08 21:47  一只笨笨鸟  阅读(180)  评论(0编辑  收藏  举报