leetCode 20.Valid Parentheses (有效的括号) 解题思路和方法

来源:互联网 发布:广电网络宽带用哪条线 编辑:程序博客网 时间:2024/04/27 17:19
Valid Parentheses 
Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.

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


思路:题目总体上比较明确,是对括号是否有效做判断,算法上是用栈来实现,单边入栈,配对之后出栈,最后判断栈是否为空,不为空说明最后没有配对完成,返回false.

具体代码如下:

public class Solution {    public boolean isValid(String s) {        Stack<Character> st = new Stack<Character>();        char[] ch = s.toCharArray();        int len = ch.length;        //如果长度为奇数,肯定无效        if((len & 1) != 0){            return false;        }                for(int i = 0; i < len; i++){            if(st.isEmpty()){//栈为空,直接入栈                st.push(ch[i]);            }else{//不为空则讨论栈顶元素是否与ch[i]配对。配对也出栈                if(isMatch(st.peek(),ch[i])){//是否配对                    st.pop();//栈顶元素出栈                }else{                    st.push(ch[i]);//不配对入栈                }            }        }        return st.isEmpty();    }    //a为栈顶元素,b为字符串最前元素    public static boolean isMatch(char a, char b){        switch(a){            case '(': if(b == ')') return true; else return false;            case '{': if(b == '}') return true; else return false;            case '[': if(b == ']') return true; else return false;            default : return false;        }    }}


0 0
原创粉丝点击