NO32.有效的括号

复制代码
暴力解法,俩次循环第一次记录(的每个下标,再分别做判断
class Solution:
    def longestValidParentheses(self, s: str) -> int:
        lg = len(s)
        nums = [i for i in range(lg) if s[i] == '(']
        if len(nums) == lg:
            return 0
        ret = 0
        for left in nums:
            a, b = 0, 0
            for i in range(left, lg):
                if s[i] == '(':
                    a += 1
                else:
                    b += 1
                if a == b:
                    ret = max(ret, a * 2)
                elif b > a:
                    break
        return ret
复制代码
复制代码
#括号匹配,由于是一对因此想到栈,只是需要考虑如何表示有效长度的问题
class Solution:
    def longestValidParentheses(self, s: str) -> int:
        res = 0
        stack = [-1] #为了方便记录当前有效长度
        for i,c in enumerate(s):
            if c=='(':# 如果是(,直接进栈
                stack.append(i)
            elif len(stack)==1: #代表stack已经没有(
                stack.pop()
                stack.append(i)
            else:
                stack.pop()
                res = max(res,i-stack[-1]) #更新
        return res
复制代码

 

 

 

 
 
posted @   是冰美式诶  阅读(41)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示