- https://leetcode.cn/problems/longest-valid-parentheses/
- 给你一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长有效(
格式正确且连续)括号子串的长度。
/******************************************************************************
Welcome to GDB Online.
GDB online is an online compiler and debugger tool for C, C++, Python, PHP, Ruby,
C#, OCaml, VB, Perl, Swift, Prolog, Javascript, Pascal, COBOL, HTML, CSS, JS
Code, Compile, Run and Debug online from anywhere in world.
*******************************************************************************/
#include <stdio.h>
#include <string>
#include <stack>
#include <vector>
#include <iostream>
using namespace std;
class Solution {
public:
int longestValidParentheses(string s) {
int maxLen = 0;
stack<int> mstack;
mstack.push(-1);
for (int i = 0; i < s.size(); i++) {
char c = s[i];
if (c == '(') { // 左括号的索引,入栈
mstack.push(i);
} else { // 遍历到右括号
mstack.pop(); // 栈顶的左括号被匹配,出栈
if (!mstack.empty()) { // 栈未空
int curMaxLen = i - mstack.top(); // 计算有效连续长度
maxLen = max(maxLen, curMaxLen); // 挑战最大值
} else { // 栈空了
mstack.push(i); // 入栈充当参照
}
}
}
return maxLen;
}
};
int main()
{
Solution myso ;
int res = myso.longestValidParentheses("(())");
cout <<res;
return 0;
}
文章介绍了如何解决LeetCode中的32题,即找到给定字符串中最长的有效括号子串。解决方案包括使用栈的数据结构以及动态规划的方法。代码示例使用C++实现,通过维护一个栈来跟踪左括号的位置,从而计算最长连续有效括号的长度。
728

被折叠的 条评论
为什么被折叠?



