Given a string containing just the characters '(' and ')', find the length of the longest valid (well-formed) parentheses substring.
题意: 找出 最长有效子字串
有效:
Example 1:
Input: s = "(()"
Output: 2
Explanation: The longest valid parentheses substring is "()".
Example 2:
Input: s = ")()())"
Output: 4
Explanation: The longest valid parentheses substring is "()()".
Example 3:
Input: s = ""
Output: 0
Constraints:
0 <= s.length <= 3 * 104
s[i] is '(', or ')'.
解法:
原本判定 是否有效 以stack 来做的话
丢符号 '(' or ')'进去判别
但这其实是适用判断整串字串
但这题是求子字串的有效和其字串长度,也就是说: 在有效子字串(s)中看谁最长 --> 动态ansMax更新
而切分点 可由
Ex : ()(() : 2 ( 2 --> 切分点为 '('
Hint : 丢 index 进 stack 可用来计算长度
Code
class Solution:
def longestValidParentheses(self, s: str) -> int:
stack = []
stack.append(-1)
ansMax = 0
if len(s)==0:
return 0
for i in range(len(s)):
if s[i]=='(':
stack.append(i)
else:
stack.pop()
if len(stack)==0:
stack.append(i)
else:
#print(stack[-1])
curlen = i - stack[-1]
if curlen > ansMax:
ansMax = curlen
print(ansMax)
return ansMax
<<: RxJS Multicast 类 Operator (1) - multicast / publish / refCount / share / shareReplay
>>: From Engineering to Business
开始前,先提个小小的观念: ✏️ 在 Git 的世界里,不管是新增、删除或重新命名,都可以看为是一个...
移除元素 如果要从切片中移除元素,下面是一个比较简单粗暴的写法 slice := []int{1, ...
有人说作为新手不好理解,我觉得蛮正常的,一来我中文其实不好,二来要理解新概念只用看的其实不够,最好是...
正文 今天准备来将Day04、Day06的东西布署上来。 先写个namespace的yaml之後,东...
什麽是介面样式? 所谓的介面样式,就是更改一些用户操作样式,以提高用户体验。 更改用户的鼠标样式 ...