当前位置: 首页 > 后端技术 > Python

力扣32.最长有效括号Python实现

时间:2023-03-26 01:46:04 Python

题目要求:思路:括号匹配,首先想到的应该是栈,因为需要统计长度,所以栈中存放下标有两种情况:当前字符为")",先弹出栈顶元素,再判断栈是否为空。如果为空,则将当前字符的下标存入栈中。如果不为空,则将当前字符下标减去最前面元素的下标,得到当前子串的长度,与当前最大长度res进行比较,res为(res,的长度当前子串)。当字符为“(”时,直接将当前下标追加入栈,因为左括号不能匹配上一个中括号。初始化时,栈应该添加元素“-1”,因为如果字符串的第一个字符是")"并且需要弹出。也是因为需要弹出,所以如果弹出后栈为空,则要将当前的")"下标存入栈中,防止下一位为")"核心代码:#初始化栈stack=[-1]res=0foriinrange(len(s)):ifs[i]==")":stack.pop()ifnotstack:stack.append(i)else:res=max(res,i-stack[-1])else:stack.append(i)returnres完整代码:class解决方案:deflongestValidParentheses(self,s:str)->int:stack=[-1]res=0foriinrange(len(s)):ifs[i]==")":stack.pop()如果不是stack:stack.append(i)else:res=max(res,i-stack[-1])否则:stack.append(i)返回res