LeetCode第20题有效的括号

继续打卡算法题,今天学习的是LeetCode的第20题有效的括号,这道题目是道中等题。算法题的一些解题思路和技巧真的非常巧妙,每天看一看算法题和解题思路,我相信对我们的编码思维和编码能力有一些帮助。

分析一波题目

这个题目需要判断括号是有效果的,有效括号有一个特征非常重要, 那就是遇到了右边的括号,一定存在左边匹配的括号。

比如[()], 遇到)的时候,最近的一个一定存在(,最近的也是最近最后遍历到的括号,我们可以使用栈结构来表达这种数据。

编码解决

java 复制代码
class Solution {
    public boolean isValid(String s) {
        int n = s.length();
        //存储关系
        Map<Character, Character> map = new HashMap<Character, Character>() {{
            put(')', '(');
            put(']', '[');
            put('}', '{');
        }};
        Deque<Character> stack = new LinkedList<Character>();
        for (int i = 0; i < n; i++) {
            char ch = s.charAt(i);
            //是右边的括号
            if (map.containsKey(ch)) {
                //是否栈顶有匹配的左边括号
                if (stack.isEmpty() || stack.peek() != map.get(ch)) {
                    return false;
                }
                stack.pop();
            } else {
                //左边的括号,入栈
                stack.push(ch);
            }
        }
        return stack.isEmpty();
    }
}

总结

栈的先进后出结构可以解决一些有规律的符号匹配的问题,使用起来非常巧妙。

相关推荐
名字还没想好☜12 分钟前
Go slice 的 append 陷阱:共享底层数组导致的数据串改
开发语言·后端·golang·go·slice
诸神缄默不语15 分钟前
FastAPI后端配置CORS中间件支持浏览器跨域访问
后端·fastapi
Fanta丶16 分钟前
14.Activiti7 网关 排他网关ExclusiveGateway、并行网关ParallelGateway
后端
众人皆醒我独醉16 分钟前
etcd,其实不是你以为的"数据库"——Kubernetes 大脑的六个反直觉真相
面试·kubernetes
明月_清风25 分钟前
robots.txt 完全指南:从入门到精通
后端·爬虫
jvmind_dev25 分钟前
Java GC 实战指南(番外篇):被忽视的隐形杀手 —— Class Unloading 如何拖垮 GC
java·后端
可编程芯片开发28 分钟前
基于MPPT最大功率跟踪的离网光伏发电系统Simulink建模与仿真
算法
明月_清风32 分钟前
从零写一个"像人"的爬虫:反爬攻防实战指南
后端·爬虫
贰先生34 分钟前
Xiuno BBS 审计之问题13:管理员发帖 doctype=0 时存储型 XSS
后端
AI科技星36 分钟前
线性算子不是空间映射函数,是全域双螺旋场之间拉伸、旋转、耦合、坍缩的跨空间标准化变换载体《全域数学vs传统数学:人类文明进阶200讲》第80讲
线性代数·算法·矩阵·数据挖掘·回归·乖乖数学·全域数学