32. 最长有效括号

题目链接 32. 最长有效括号
思路 动态规划
题解链接 官方题解
关键点 1. 只有si=(时才需要转移 2. 当遇到'...))'格式的情形时,需要考虑前面片段中转移的索引下标
时间复杂度 O(n)
空间复杂度 O(n)

状态转移方程为(只有si=(时才需要转移):

dpi={2+dpi2,si1=(2+dpi1+dp[i1dp[i1]1],si1=) and si1dpi1=(

代码实现:

class Solution:
def longestValidParentheses(self, s: str) -> int:
answer = 0
n = len(s)
dp = [0] * n
for i in range(1, n):
if s[i] == ')':
if s[i-1] == '(':
dp[i] = 2 + (0 if i<2 else dp[i-2])
elif i - dp[i-1] > 0 and s[i-1 - dp[i-1]] == '(':
dp[i] = 2 + dp[i-1] + (0 if i-dp[i-1] < 2 else dp[i-1-dp[i-1]-1])
answer = max(answer, dp[i])
return answer
posted @   WrRan  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效
点击右上角即可分享
微信分享提示