20. 有效的括号 --力扣 --JAVA

题目

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

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。
  3. 每个右括号都有一个对应的相同类型的左括号。

解题思路

  1. 因为括号是由左右匹配的,所以可以通过出入栈来存储数据;
  2. 匹配后出栈,否则入栈;
  3. 通过判断站是否有存于来返回结果;
  4. 因为匹配的括号插值在1或2,所以可以直接通过值的比较来判断是否匹配。

代码展示

java 复制代码
public class Zero {
    public static void main(String[] args) {
        Zero zero = new Zero();
        System.out.println(zero.isValid("()"));
        System.out.println(zero.isValid("()[]{}"));
        System.out.println(zero.isValid("(]"));
    }
    //字符对应的数字 (:40 ):41    [:91    ]:93    {:123   }:125
    public boolean isValid(String s) {
        int length = s.length();
        if(length % 2 != 0){
            return false;
        }
        Stack<Character> data = new Stack<>();
        data.push(s.charAt(0));
        for (int i = 1; i < length; i++){
            char now = s.charAt(i);
            if(data.size() != 0) {
                Character temp = data.peek();
                if (temp == now - 1 || temp == now - 2) {
                    data.pop();
                } else {
                    data.push(now);
                }
            } else {
                data.push(now);
            }
        }
        return data.size() == 0;
    }
}
相关推荐
lili-felicity1 分钟前
指针与数组:深入C语言的内存操作艺术
c语言·开发语言·数据结构·算法·青少年编程·c#
PengFly1234 分钟前
题解:[ABC294G] Distance Queries on a Tree
算法·lca·树状数组·dfs序
月亮邮递使light7 分钟前
代码随想录算法训练营第五十八天 | 拓扑排序精讲 dijkstra(朴素版)精讲
算法
野風_1996020120 分钟前
代码随想录第59天
算法
HappyAcmen28 分钟前
青训营-豆包MarsCode技术训练营试题解析四十八
开发语言·python·算法
Zer0_on30 分钟前
数据结构二叉树
开发语言·数据结构
码农老起35 分钟前
插入排序解析:时间复杂度、空间复杂度与优化策略
数据结构·算法·排序算法
俎树振1 小时前
深入理解与优化Java二维数组:从定义到性能提升的全面指南
java·算法
DARLING Zero two♡1 小时前
【优选算法】Sliding-Chakra:滑动窗口的算法流(上)
java·开发语言·数据结构·c++·算法
清风~徐~来1 小时前
【高阶数据结构】红黑树模拟实现map、set
数据结构