Description
Given a string containing just the characters ‘(’ and ‘)’, find the length of the longest valid (well-formed) parentheses substring.
Example
Example 1:
Input: “(()”
Output: 2
Explanation: The longest valid parentheses substring is “()”
Example 2:
Input: “)()())”
Output: 4
Explanation: The longest valid parentheses substring is “()()”
Submissions
我的解题思路是利用栈的思想,利用enumerate() 函数遍历字符串s,并对下标进行操作。enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。首先将-1放入栈顶。当遇到‘(’ 就将它的下标放入栈中,当遇到的每个‘)’ 就弹出栈顶的元素并将当前元素的下标与弹出元素下标作差,得出当前有效括号字符串的长度。通过这种方法,我们继续计算有效子字符串的长度,并最终返回最长的有效子字符串的长度。
实现代码如下:
class Solution:
def longestValidParentheses(self, s: str) -> int:
stack = [-1]
res = 0
for i, j in enumerate(s):
if j == "(":
stack.append(i)
else:
stack.pop()
if stack:
res = max(res, i - stack[-1])
else:
stack.append(i)
return res
参考:https://blog.csdn.net/qq_32424059/article/details/90966144