标签:leetcode 索引 获得 初始化 结合 break code while ret
文章目录:
题目:
给定一个只包含 ‘(‘ 和 ‘)‘ 的字符串,找出最长的包含有效括号的子串的长度。
示例 1:
输入: "(()"
输出: 2
解释: 最长有效括号子串为 "()"
示例 2:
输入: ")()())"
输出: 4
解释: 最长有效括号子串为 "()()"
脚本一:【用时:2632ms】
class Solution: def longestValidParentheses(self, s: str) -> int: flag = ‘bb‘ list1 = list(s) list2 = [] ret = [] n2,n3,n4,n5 = 0,0,0,0 while True: try: n1 = list1.index(")") except ValueError: flag = ‘xx‘ break if flag == ‘bb‘ and n1 != 0: if list1[n1 - 1] == "(": n2 = len(list2) list2.append(n1+n2*2+n3) list1.pop(n1) list1.pop(n1-1) elif n1 == 0: n3 += 1 list1.pop(n1) if list2: pass else: return(0) for j in range(max(list2),-1,-1): if j in list2: n5 += 1 else: if n5 > 0: list2.append(j) n5 -= 1 else: pass list2.sort() for i in list2: if (i+1) in list2: n4 += 1 else: n4 += 1 ret.append(n4) n4 = 0 if ret: return(max(ret)) else: return(0)
脚本一逻辑:
脚本二:【用时44ms】【转载】
class Solution: def longestValidParentheses(self, s: str) -> int: if(not s): return 0 stack=[-1] res=0 for i in range(len(s)): if(s[i]=="("): stack.append(i) else: stack.pop() if(not stack): stack.append(i) else: res=max(res,i-stack[-1]) return res
脚本二逻辑:
标签:leetcode 索引 获得 初始化 结合 break code while ret
原文地址:https://www.cnblogs.com/mailong/p/12057591.html