def longestValidParentheses(s): left=right=ans=0 length=len(s) for i in range(length): if s[i]=='(': left+=1 else: right+=1 if left==right: ans=max(ans,2*right) elif right>left: left=right=0 left=right=0 for i in range(length-1,-1,-1): if s[i]==')': right+=1 else: left+=1 if left==right: ans=max(ans,2*left) elif left>right: left=right=0 return ans s="()()()()" print(longestValidParentheses(s))
时间: 2024-03-28 15:39:46 浏览: 280
weijiyuanli.rar_MáS_ans_weijiyuanli
这是一段 Python 代码,实现了寻找最长有效括号子串的功能。该函数的输入是一个字符串 s,代表一个只包含 '(' 和 ')' 的字符串,函数的输出是一个整数,表示 s 中最长的有效括号子串的长度。
该函数采用了栈的思想,首先从左往右遍历字符串,用 left 记录左括号的数量,用 right 记录右括号的数量。当 left 和 right 相等时,说明找到了一个有效的括号子串,更新 ans 的值。如果 right 大于 left,说明当前括号子串无效,需要从下一个位置重新开始计数。
然后再从右往左遍历字符串,用 left 和 right 记录左右括号的数量,寻找有效括号子串,更新 ans 的值。
对于输入 s="()()()()",该函数的输出应为 8,因为 s 中最长的有效括号子串是整个字符串,长度为 8。
阅读全文