无效的括号

题目形容:给定一个只包含 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否无效。

无效字符串需满足:

左括号必须用雷同类型的右括号闭合。
左括号必须以正确的程序闭合。

示例阐明请见LeetCode官网。

起源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/valid-parentheses/
著作权归领扣网络所有。商业转载请分割官网受权,非商业转载请注明出处。

解法一:利用栈
初始化一个左括号栈leftParentheses,遍历字符串s的每个字符,当遇到左括号时,将以后字符入栈,当遇到右括号时,判断leftParentheses栈顶的字符是否是以后字符对应的左括号,如果不是,返回有效;否则出栈。遍历实现后,判断leftParentheses是否为空,如果不为空,阐明左括号没有对应的右括号,返回有效;否则,无效。
import java.util.Stack;public class Solution {    public static boolean isValid(String s) {        if (s == null || s.length() == 0) {            return true;        }        Stack<Character> leftParentheses = new Stack<>();        for (char parentheses : s.toCharArray()) {            if (parentheses == '(' || parentheses == '{' || parentheses == '[') {                leftParentheses.push(parentheses);            } else if (parentheses == ')') {                if (leftParentheses.size() > 0 && leftParentheses.peek() == '(') {                    leftParentheses.pop();                } else {                    return false;                }            } else if (parentheses == ']') {                if (leftParentheses.size() > 0 && leftParentheses.peek() == '[') {                    leftParentheses.pop();                } else {                    return false;                }            } else if (parentheses == '}') {                if (leftParentheses.size() > 0 && leftParentheses.peek() == '{') {                    leftParentheses.pop();                } else {                    return false;                }            }        }        if (leftParentheses.size() != 0) {            return false;        }        return true;    }    public static void main(String[] args) {        System.out.println(isValid("()[]{}"));    }}

【每日寄语】每个睡醒后的晚上都是一件礼物,把每个开心后的微笑当成一个习惯,美妙的一天从当初开始。