3 分钟看懂如何判断括号的合法性

判断括号的合法性 文章目录只有一种括号多种括号注 输⼊⼀个字符串,其中包含 {} 六种括号,请你判断这个字符串组成的括号是否合法。 Input: "()[]{}" Output: true Input: "([)]" Output: false Input: "{[]}" Output: true 只有一种括号 字符串中只有圆括号,如果想让括号字符串合法,那么必须做到: 每个右括号 ) 的左边必须有⼀个左括号... 阅读详情

预计阅读时间:3 分钟

对括号的合法性判断是一个很常见且实用的问题,比如说我们写的代码,编辑器和编译器都会检查括号是否正确闭合。而且我们的代码可能会包含三种括号[](){},判断起来有一点难度。

本文就来聊一道关于括号合法性判断的算法题,相信能加深你对栈这种数据结构的理解。

题目很简单,输入一个字符串,其中包含[](){}六种括号,请你判断这个字符串组成的括号是否合法。

640?wx_fmt=png

解决这个问题之前,我们先降低难度,思考一下,如果只有一种括号(),应该如何判断字符串组成的括号是否合法呢?

一、处理一种括号

字符串中只有圆括号,如果想让括号字符串合法,那么必须做到:

每个右括号)的左边必须有一个左括号(和它匹配。

比如说字符串()))((中,索引为 2 和 3 的两个右括号左边就没有左括号匹配,所以这个括号组合是不合法的。

所以我们可以一边遍历一边记录遇到左括号的个数,每次遇到右括号就匹配一个左括号数。根据这个思路,我们可以写出算法:

640?wx_fmt=png

如果只有圆括号,这样就能正确判断合法性。对于三种括号的情况,我一开始想模仿这个思路,定义三个变量left1,left2,left3分别处理每种括号,虽然要多写不少 if else 分支,但是似乎可以解决问题。

但实际上直接照搬这种思路是不行的,比如说只有一个括号的情况下(())是合法的,但是多种括号的情况下,[(])显然是不合法的。

仅仅记录每种左括号出现的次数已经不能做出正确判断了,我们要加大存储的信息量,可以利用栈来模仿类似的思路。

二、处理多种括号

栈是一种先进后出的数据结构,处理括号问题的时候尤其有用。

我们这道题就用一个名为left的栈代替之前思路中的left变量,遇到左括号就入栈,遇到右括号就去栈中寻找最近的左括号,看是否匹配。

640?wx_fmt=png

以上就是判断括号合法性的算法思路,核心就是利用了栈先进后出的特点,栈顶元素就是最近的左括号,遇到右括号就在栈顶判断就行了。遇到括号相关的问题,可以优先考虑一下是否能借助栈来解决。

640?wx_fmt=png

640?wx_fmt=png
原来括号检测算法这么简单……
括号计分:从嵌套结构到递归加权的算法建模 括号计分是算法入门中连接字符串处理与递归结构的关键概念,其核心在于将合法括号串的嵌套和平行关系转化为可计算的数值权重。原理上遵循严格的递归定义:空串得0分,拼接串得分相加,包裹串得分翻倍,本质对应括号树的后序遍历。该模型规避了简单深度计数的逻辑缺陷,凸显结构化建模的技术价值。典型应用场景包括OI竞赛中的丙组压轴题、表达式求值变种及语法树构建基础。本文聚焦‘括号计分’规则解析与‘栈模拟’高效实现,覆盖C++工程级细节与初中算法选手的认知适配。 阅读详情

相关推荐

【React Native】源码分析之Native UI的封装和管理

转载请注明出处:http://blog.youkuaiyun.com/u013531824/article/details/54020287,谢谢。  ReactNative作为使用React开发Native应用的新框架,随着时间的增加,无论是社区还是个人对她的兴趣与日递增。此文目的是希望和大家一起欣赏一下ReactNative的部分源码。阅读源码好处多多,让攻城狮更溜的开发ReactNative应用的同时,也

Tiny的专栏 9779

与栈有关:3 分钟看懂如何判断括号的合法性

点击蓝色“五分钟学算法”关注我哟加个“星标”,天天中午 12:15,一起学算法作者 | labuladong来源 | labuladong对括号的合法性判断是一个很常见且...

程序员吴师兄的博客 1207

MT6816磁编码器在无人机电调中的实战应用:从选型到调试全记录

本文详细介绍了MT6816磁编码器在无人机电调系统中的实战应用,涵盖选型、硬件集成、软件配置到飞行测试的全流程。通过对比霍尔传感器和光电编码器,突出MT6816在角度分辨率、安装公差和抗振动能力等方面的优势,为无人机动力系统提供高精度控制解决方案。

pandas7gardener的博客 234

判断括号的使用是否合法

给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’,’<’,’>’, 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 譬如:"()[]{}“为合法,”(]"、"([)]"均为非法。 **解题思路:**栈的思想,遇到左括号入栈,右括号出栈并检查是否匹配,如果不匹配则非法。...

ckf901gjy的博客 381

【Dify精讲】第2章:后端服务架构深度剖析

Dify后端采用Flask应用工厂模式实现模块化开发,通过蓝图架构将API分为控制台、Web应用和服务接口三大模块。其设计亮点包括:1) 应用工厂模式支持多环境配置和独立测试;2) 蓝图分层管理实现API模块化,各模块职责清晰;3) 严格遵循RESTful原则设计API接口;4) 使用Flask-RESTful扩展简化API开发。这种架构既保持了Flask的灵活性,又实现了企业级应用的可维护性,是Flask项目架构的优秀实践案例。

wiyi9891的专栏 2126

【Bluetooth蓝牙开发】九、BLE协议之GATT

1、开篇词 2、蓝牙开发入门 3、蓝牙协议栈总览 4、蓝牙协议栈——物理层 5、蓝牙协议栈——链路层 6、蓝牙协议栈——传输层 7、蓝牙协议栈——L2CAP协议 8、蓝牙协议栈——ATT协议 9、蓝牙协议栈——GATT协议 10、蓝牙通信流程分析 11、蓝牙协议栈——Bluez交叉编译 12、蓝牙调试工具汇总

Donge's Blog 4760

判断一组括号是否合法的两种方法

利用栈(可以包含不同种类型的括号) 遍历所有括号,如果遇到左括号就入栈,如果遇到右括号,将其与栈顶元素比较,查看是否匹配。如果匹配,栈顶元素出栈,如果不匹配,返回不合法。遍历完成后,如果栈为空,返回合法,如果栈不为空,返回不合法。 def isValid(s): stack = [] start = ['(', '{', '['] MAP = {')...

王九思的博客 1463

在 SAP S/4HANA 分析模型中添加 Measures,Calculated、Restricted、Currency Conversion 与 Unit Conversion 的建模思路

摘要: SAP S/4HANA分析查询建模中,度量(measure)的加工层级是关键难点,涉及聚合时机、币种/单位语义、过滤上下文等复杂因素。度量不仅是数字字段,还需处理计算口径(Calculated Measures)、上下文绑定(Restricted Measures)和单位转换等问题。Calculated Measures适合派生指标(如毛利率),需注意聚合前后计算差异;Restricted Measures通过固化过滤条件(如区分实际/计划金额)确保业务语义一致性。建模时应将业务逻辑下沉到分析模型层

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1022

jquery $.trim()去除字符串空格

语法jQuery.trim()函数用于去除字符串两端的空白字符。 作用该函数可以去除字符串开始和末尾两端的空白字符(直到遇到第一个非空白字符串为止)。它会清除包括换行符、空格、制表符等常见的空白字符。 参数如果参数str不是字符串类型,该函数将自动将其转为字符串(一般调用其toString()方法)。如果参数str为 null或 undefined,则返回空字符串("")。 返回值jQuer...

weixin_33804990的博客 370

案例:无人船测量点位数据+ArcGIS 10.6软件生成三维水下地形的两种方法

通常情况下,采用无人船进行水下地形测量,得到的是离散的,具有点号、日期、时间、东坐标(E)、北坐标(N)、水面高程、水下高程和水深等信息的点位数据,该数据一般由航带点位数据加水岸线组成,如下图所示: 原始点位数据格式如下: 下面讲解在ArcGIS软件中生成三维水下地形的两种常用方法。 一、构建不规则三角网(Tin) 1、创建Tin 生成的Tin: 2、Tin转栅格 Tin to Raster: 三维展示: 二、空间插值 栅格插值常用的方法有:克里...

智慧空间实验室 6750

解决开着代理情况下pip或魔搭下载失败

最近由于经常配环境导致,老是要来回切clash关掉代理,非常的不方便如下面的,魔搭模型下载失败如下面的,pip换源后下载失败。

风吹落叶的博客 2950

判断输入的邮箱地址是否合法_与栈有关:3 分钟看懂如何判断括号的合法性

点击蓝色“五分钟学算法”关注我哟加个“星标”,天天中午 12:15,一起学算法作者 | labuladong来源 | labuladong对括号的合法性判断是一个很常见且实用的问题,比如说我们写的代码,编辑器和编译器都会检查括号是否正确闭合。而且我们的代码可能会包含三种括号[](){},判断起来有一点难度。本文就来聊一道关于括号合法性判断的算法题,相信能加深你对栈这种数据结构的理解。题目...

weixin_39835158的博客 263

NOTE: When using the `ipython kernel` entry point, Ctrl-C will not work.解决方案

本文主要介绍了NOTE: When using the `ipython kernel` entry point, Ctrl-C will not work.解决方案,希望能对使用jupyter notebook的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 11万+

栈与回溯实战:LeetCode有效的括号与括号生成全解析

在算法面试与刷题训练中,栈结构、递归回溯与括号匹配是绕不开的三座基石。有效的括号问题通过哈希映射与栈的配合,逐字符验证字符串合法性,其核心在于类型匹配与闭合顺序的规则;而括号生成则利用回溯算法在递归过程中剪枝,枚举出所有合法组合,其数量满足卡特兰数规律。二者一判一生,互为逆操作,共同指向相同的前缀合法性原则。这类问题广泛出现在编译器语法检查、表达式解析、代码编辑器自动补全等真实工程场景中。理解从栈到回溯的递进关系,掌握递归状态设计与剪枝条件,不仅能高效解决括号类题目,更能迁移至排列组合、二叉树遍历等高频算法

weixin_34183910的博客 366

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

js正则表达式检查时间的合法性

有个WEB应用程序,需要在一个datagrid里面输入时间。决定在提交前检测时间合法性。 思路: 1、设置一个可使用自定义的javascript函数的数据检查控件CustomValidator指向时间输入文本框txtTime; 2、编写一个检测时间的javascript函数CheckTime; 3、将CustomValidator的属性ClientValidatorFunction设为

vip_linux的专栏 1361

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

【忍者算法】5分钟彻底掌握括号生成题!用「栈匹配理论」轻松理解|LeetCode 22 括号生成

平衡原则:右括号数不超过左括号计数约束:左右括号各n个回溯思维:在保证合法性的前提下尝试所有可能作者:忍者算法公众号:忍者算法🎁 回复【刷题清单】获取LeetCode高频面试题合集🧑‍💻 回复【代码】获取多语言完整题解💡 回复【加群】加入算法交流群,一起进步#算法面试 #LeetCode #回溯算法 #括号匹配。

忍者算法的博客 1176

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

LeetCode 22 括号生成:AlgoNote 回溯算法三步走实战解析

> 本篇基于「算法通关手册」的题解体系,围绕 LeetCode 22「括号生成」展开。该题是回溯算法在字符串组合问题中的经典应用,也是 [回溯算法题目列表](https://link.gitcode.com/i/7660fc2eb4833eca9c9938e5b762670d) 中的高频面试题(同时收录于 [面试 100 题列表](https://link.gitcode.com/i/959323

gitblog_00835的博客 141

【23 题(有效的括号序列)】

合法性 = “任意前缀中左括号数 ≥ 右括号数” 且 “最终左右数量相等” 且 “类型必须一一对应”。(快刷四部曲:① 抽象模型 → ② 最优算法 → ③ 边界/异常 → ④ 一行一行写代码)用“快刷四部曲”把 423 题(有效的括号序列)在 5 分钟内秒掉。→ 经典“栈”模型:遇到左括号就压栈,遇到右括号就看栈顶是否匹配。写完,直接 Submit,一遍 AC。时间 O(n),空间 O(n)。只有 3 对符号:圆、方、花。空间:O(n) 最坏全左括号。时间:O(n) 必须扫一遍。

个人总结 265

卡特兰数:嵌套合法性与路径不穿越的工程计数原理

卡特兰数是计算机科学中刻画‘嵌套合法性’与‘路径不穿越’约束的核心组合数学工具,其本质源于对累积差值非负+总和归零的双变量耦合约束建模。它并非抽象公式,而是编译器括号校验、栈操作序列、二叉树形态、三角剖分等场景的底层计数协议。相比斐波那契或普通排列组合,卡特兰数唯一能精确描述‘任意前缀中开括号数不少于闭括号数’这类实时守恒结构,广泛应用于JSON解析、消息队列调度、UI树渲染优化及分布式事务协调等工程实践。本文聚焦其可落地的原理映射与性能关键决策点。

weixin_34379433的博客 537

蓝桥杯回文日期题解:日期合法性校验与回文结构优化

回文日期是算法竞赛中典型的规则驱动型问题,本质是结合字符串回文结构与公历日期合法性校验的复合判断。其核心原理在于YYYYMMDD格式下,年份唯一决定镜像月份和日期,从而将搜索空间从百万级压缩至9000个年份。技术价值体现在对格里高利历规则、闰年精确判定(需同时满足%4、%100、%400三重条件)及月份天数动态映射的工程化实现能力。典型应用场景包括日志归档识别、金融风控扫描等生产系统中的时间敏感校验任务。本文聚焦回文结构约束与日期合法性校验两大热词,提供可落地的分层验证方案。

weixin_33923762的博客 277

信息学奥赛必备:栈在优先级括号匹配中的高效应用

本文深入探讨了栈在信息学奥赛括号匹配问题中的高效应用,特别是引入优先级规则后的复杂场景处理。通过基础原理、竞赛真题解法和常见错误分析,帮助选手掌握栈结构的核心应用技巧,并扩展到工程实践中的实际用例,提升算法竞赛和编程实战能力。

weixin_29303701的博客 338

AlgoNote 题解精讲 | LeetCode 0032「最长有效括号」:动态规划与栈双解法深度解析

本文是 AlgoNote「算法通关手册」系列题解之一,围绕 LeetCode 0032 题「最长有效括号(Longest Valid Parentheses)」展开:先精确还原题目语义与边界约束,再分别给出「动态规划」与「栈」两种主流解法,包括阶段划分、状态定义、状态转移方程的完整推导、可运行代码、复杂度分析以及逐步走查示例,并辅以仓库内 [动态规划基础](https://link.gitcode

gitblog_00588的博客 358

利用正则表达式检查时间的合法性

利用正则表达式检查时间的合法性 左直拳 许多时候,少不得要检测一下用户输入的时间格式是否正确。对于B/S结构程序而言,既可以在服务器端检查,也可以在浏览器端检查,将错误封杀于提交之前,免得拿这些小事去烦服务器。 我有个WEB应用程序,需要在一个datagrid里面输入时间。决定在提交前检测时间合法性。 思路如下: 1、 设置一个可使用自定义的javascript函数的数据检查控件Cust...

yangshen998 116

LeetCode回溯算法实战:括号生成与全排列详解

回溯算法是一种通过递归遍历解空间树来寻找所有可行解的通用方法,其核心在于做选择与撤销选择。在组合类问题中,通过计数剪枝控制合法前缀;在排列类问题中,利用标记数组避免重复选择。回溯能高效解决暴力枚举无法处理的组合爆炸问题,广泛应用于括号生成、全排列、子集、N皇后等场景。本文以LeetCode括号生成和全排列为例,深入解析回溯模板、剪枝策略及代码实现,帮助读者掌握回溯算法的核心思想与工程实践。

weixin_33859231的博客 526

搜狗客户端秋招编程题解析:编辑距离、括号匹配与股票问题实战

在客户端开发岗位的笔试中,算法题考察的不仅是逻辑思维,更是对字符串处理、状态转换等工程能力的检验。动态规划作为解决最优化问题的核心思想,在编辑距离计算中扮演关键角色,而栈结构则是括号匹配与语法解析的基础工具。本文从这些通用算法原理出发,结合搜狗客户端工程师秋招真题,深入剖析编辑距离的DP推导、最长合法括号子串的栈解法,以及股票问题的单次遍历优化,并给出完整C++代码与易错点分析。文章同时涵盖输入输出处理、复杂度估算等笔试实战技巧,帮助求职者建立从算法到业务场景的映射能力,适用于准备搜狗及类似公司客户端方向的

weixin_33937499的博客 428
上一篇: 操作系统学习(一)-- 从发展史理解操作系统设计需求
下一篇: 十一我没去旅游,拜访了腾讯、阿里、美团的Java开发大佬的公众号,都很优秀。...
程序员乔戈里
博客等级 码龄8年 1057粉丝 220原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值