当前位置:网站首页>leetcode 32. 最长有效括号 (困难)
leetcode 32. 最长有效括号 (困难)
2022-08-09 08:18:00 【_刘小雨】
作者简介:C/C++ 、Golang 领域耕耘者,创作者
个人主页:作者主页
活动地址:CSDN21天学习挑战赛
题目来源: leetcode官网
如果感觉博主的文章还不错的话,还请关注 、点赞 、收藏🧡三连支持一下博主哦~~~
题目描述
给你一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长有效(格式正确且连续)括号子串的长度。
示例1:
输入:s = “(()”
输出:2
解释:最长有效括号子串是 “()”
示例2:
输入:s = “)()())”
输出:4
解释:最长有效括号子串是 “()()”
示例 3:
输入:s = “”
输出:0
🧡 算法分析
此题方法之一是用栈
我们通过标记合法的括号,可以得出,每一段合法的括号在字符串出现的位置一定是连续且不相交的
做括号匹配的这题可以用栈存储相应的信息,算法过程为:
- 用栈维护当前待匹配的左括号的位置,同时用 start 记录一个新的可能合法的子串的起始位置,初始设为0
- 如果s[i] ==‘(’,那么把i进栈
- 如果s[i] == ‘)’,那么弹出栈顶元素 (代表栈顶的左括号匹配到了右括号),出栈后:
如果栈为空,说明以当前右括号为右端点的合法括号序列的左端点为start,则更新答案 i - start + 1
如果栈不为空,说明以当前右括号为右端点的合法括号序列的左端点为栈顶元素的下一个元素,则更新答案i - st.top()

4、遇到右括号)且当前栈为空,则当前的 start 开始的子串不再可能为合法子串了,下一个合法子串的起始位置必定是当前遍历位置 i + 1 开始,更新 start = i + 1。
5、最后返回答案即可
代码实现
class Solution {
public:
int longestValidParentheses(string s) {
stack<int> st;
int re = 0;
for(int i = 0, start = 0; i < s.size(); i ++)
{
if(s[i] == '(') st.push(i);
else
{
if(st.size())
{
st.pop();
if(st.empty()) re = max(re, i - start + 1);
else re= max(re, i - st.top()); // 因为之前已经弹出来了一个元素 (st.top() + 1) - 1
}
else
start = i + 1; // 更新
}
}
return re;
}
};
执行结果:

时间复杂度分析
其中字符串只遍历一次, 时间复杂度为O(n)
如果觉得对你有帮助的话:
点赞,你的认可是我创作的动力!
🧡 收藏,你的青睐是我努力的方向!
️ 评论,你的意见是我进步的财富!
边栏推荐
猜你喜欢

3D软件开发工具HOOPS全套产品开发介绍 | HOOPS Exchange、HOOPS Communicator

Solidworks 2022 Inspection新增功能:光学字符识别、可自定义的检查报告

Database MySQL installation and uninstallation

Different styles of Flask-restful

数据库中的操作(语法)

不同风格的Flask-restful

SOLIDWORKS 2022新功能直播揭秘!速来围观!

File Handling (IO)

+ 6000 words, help you understand the Internet architecture evolution.

网络层协议介绍
随机推荐
Win10电脑的WLAN消失的故事
火星人 --简单的数学题
P1064 金明的预算方案
jdbctemplate connects to sql server, the data found in the code is inconsistent with the database, how to solve it?
静态路由原理与配置
三次握手,四次挥手
账号和权限管理
Cookie and Session Details
OSI网络模型
不同风格的Flask-restful
Object detection app based on appinventor and EasyDL object detection API
MySQL数据库
SQL存储过程
网络层协议介绍
监视文本框的输入
Shell--常用小工具(sort、uniq、tr、cut)
3D精彩案例,清软英泰建成综合轻量化显示平台!
Programming a washing machine: garbled characters after string output
交换机的工作原理
Notes on OpenHarmony Open Source Meeting (Nanjing Station)