LeetCode刷题笔录Valid Parentheses

来源:互联网 发布:公知和五毛是什么意思 编辑:程序博客网 时间:2024/06/07 05:34

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.

这题只要求括号是合法的。用一个stack,遇到左括号就丢到stack里,遇到右括号就弹出stack顶上的括号,看看是不是一对。是的话就继续,不是的话返回false。扫描完一遍以后,stack如果不是空的,说明左括号多了,返回false。

public class Solution {    public boolean isValid(String s) {        //this stack stores all the left parentheses        Stack<Character> stack = new Stack<Character>();        for(int i = 0; i < s.length(); i++){            char current = s.charAt(i);            //if the next character is a right par            if(isLeft(current) == false){                if(stack.isEmpty()){                    return false;                }                //check the top par on the stack if it formsa pair with the current par                char top = stack.pop();                if(isPair(top, current) == false){                    return false;                }            }            //if the next character is a left par, push onto the stack            else{                stack.push(current);            }        }        if(stack.isEmpty() == false)            return false;        return true;            }        public boolean isLeft(char c){        if(c == '[' || c == '{' || c == '(')            return true;        else            return false;    }        public boolean isPair(char left, char right){        if(left == '(' && right == ')')            return true;        if(left == '[' && right == ']')            return true;        if(left == '{' && right == '}')            return true;        return false;    }}


0 0
原创粉丝点击