
【力扣】[热题 HOT100] 32.最长有效括号
初始化栈:栈中最初放入-1,这是为了计算包含当前右括号的情况。 遍历字符串:对每个字符进行处理。
发布日期:2021-05-10 06:33:53
浏览次数:11
分类:精选文章
本文共 1148 字,大约阅读时间需要 3 分钟。
最长有效括号子串长度问题分析
问题描述
给定一个仅包含 '(' 和 ')' 的字符串,找出其中最长的有效括号子串的长度。有效括号子串要求格式正确且连续。
思路解析
为了找到最长的有效括号子串,可以使用栈来解决这个问题。栈的主要作用是记录左括号的位置,从而能够快速找到匹配的右括号。以下是具体的思路步骤:
- 如果是左括号,压栈,记录其位置。
- 如果是右括号,弹栈,找出相应的左括号。
- 如果栈为空,说明当前右括号可能作为起点,压栈记录当前位置。
- 如果栈不为空,计算当前右括号位置与栈顶元素的差值,得到一个有效子串的长度,更新最大长度。
代码实现
public class Solution { public int longestValidParentheses(String s) { if (s.empty()) { return 0; } int maxLen = 0; stackst = new stack<>(); // 栈中存储左括号的位置 st.push(-1); // 初始化栈,用于处理连续的右括号情况 for (int i = 0; i < s.size(); ++i) { if (s.charAt(i) == '(') { st.push(i); // 遇到左括号,压栈 } else { st.pop(); // 遇到右括号,弹栈 if (st.empty()) { // 栈为空,说明当前右括号可能是一个单独的右括号 st.push(i); // 为空则压栈,供后续计算使用 } else { int currentLen = i - st.top(); // 计算当前有效子串的长度 maxLen = Math.max(maxLen, currentLen); // 更新最大长度 } } } return maxLen; }}
总结
通过上述方法,可以高效地找到字符串中的最长有效括号子串。这种方法的时间复杂度为O(n),空间复杂度为O(n),适用于处理较长字符串的情况。
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年04月09日 18时40分58秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
将字符串中的特定字符替换为其他字符
2019-03-07
创建一个简单的SpingBoot项目,并且部署到linux上运行
2019-03-07
Python之Numpy库的简单介绍(一)
2019-03-07
java反射
2019-03-07
仅仅反转字母
2019-03-07
【Linux】程序地址空间,分段式、分页式存储理解
2019-03-07
【力扣】[热题 HOT100] 32.最长有效括号
2019-03-07
YOLOv5超详细的入门级教程(训练篇)(五)——远程服务器上后台训练网络
2019-03-07
mysql8.0及以上在my.cnf设置sql_mode之后mysql无法启动
2019-03-07
C语言编译错误列表
2019-03-07
万倍币传说不再,价值回归
2019-03-07
这可能是后浪们逆袭的唯一机会
2019-03-07
观点 | COMP的流动性挖矿并非万能解药
2019-03-07
Uniswap之后的下一个爆点?Aave启用新的治理平台,即将开启代币迁移
2019-03-07
尽管DeFi项目数量下降,但总价值却仍在不断攀升
2019-03-07
泰国修改净资本规则,允许证券公司持有加密货币等数字资产
2019-03-07
Bakkt完成1.82亿美元首轮融资,这家交易所凭什么这么牛?
2019-03-07
每天维护费700多万美元!比特币当之无愧是“最安全区块链”
2019-03-07
看明白这两种情况,才敢说自己懂跨链! | 喵懂区块链24期
2019-03-07