leetcode的python实现–32. 最长有效括号
题目描述
给定一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长的包含有效括号的子串的长度。
示例 1:
输入: “(()”
输出: 2
解释: 最长有效括号子串为 “()”
示例 2:
输入: “)()())”
输出: 4
解释: 最长有效括号子串为 “()()”
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-valid-parentheses
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路
转化为在nums数组中,寻找最长的连续的0的长度
使用栈stack,将无法匹配的括号的位置都置1
例如:"(()"的nums为[1,0,0]
")()())"的nums为[1,0,0,0,0,1]
"()()()"的nums为[0, 0, 0, 0, 0,0]
())()"的nums为[ 0, 0, 1, 0, 0]
()(()"的nums为[ 0, 0, 1, 0, 0]
最后只需要在数组nums中,寻找最长的连续的0的长度
python3实现
class Solution:
def longestValidParentheses(self, s: str) -> int:
n =len(s)
if n <2: return 0
stack