241. Different Ways to Add Parentheses
150. Evaluate Reverse Polish Notation
224. Basic Calculator
32. Longest Valid Parentheses
題意:給定一個字符串,是由 ‘(’ 和 ‘)’ 兩種字符組成,尋找最長的合法的括號子串。
輸入:")()())"
輸出:4
思路:
當然是用棧來進行括號匹配,只是得求最長的合法的括號子串,
可能字符串中有些括號不匹配導致把字符串切分成多個子串,我們需要記錄一下不匹配字符的下標,然後知道合法子串有多少個,從而求出最長的。
class Solution(object):
def longestValidParentheses(self, s):
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