20. 有效的括号

96 阅读1分钟

题目描述:

给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。

有效字符串需满足:

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

来源:力扣(LeetCode) 链接:leetcode-cn.com/problems/va… 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路: 使用栈解决问题

1、 准备一个栈stack,用来存储字符

2、 遍历字符串 s 如果遇到 '(',往栈中压入他的右括号 ')' , 剩下的两个括号的操作和这个一样。

3、 如果在遍历的过程中遇到了 ')' 则拿这个字符和栈顶的字符进行比较,如果不相同,返回false。

4、 因为括号是成对出现的,所以如果是有效的括号,那么到最后栈一定为空。

public static boolean isValid1(String s){
    Stack<Character> stack = new Stack<>();
    for(int i=0;i<s.length();i++){
        if (s.charAt(i) == '('){
            stack.add(')');
        }else if (s.charAt(i) == '['){
            stack.add(']');
        }else if (s.charAt(i) == '{'){
            stack.add('}');
        }else if (stack.isEmpty() || s.charAt(i)!=stack.pop()){
            return false;
        }
    }
    return stack.isEmpty();
}