Python程式:查詢最長平衡子序列的長度
假設我們有一個包含括號 "(" 和 ")" 的字串 s,我們需要找到最長平衡括號子序列的長度。
例如,如果輸入是 s = "())(()(",則輸出為 4,因為我們可以選擇 "()()" 作為子序列。
為了解決這個問題,我們將遵循以下步驟:
res := 0
n := s 的長度
close := 0
for i in range(n - 1, -1, -1):
if s[i] == ")": then
close := close + 1
else:
if close > 0: then
close := close - 1
res := res + 2
return res
讓我們來看下面的實現,以便更好地理解:
示例
class Solution: def solve(self, s): res = 0 n = len(s) close = 0 for i in range(n - 1, -1, -1): if s[i] == ")": close += 1 else: if close > 0: close -= 1 res += 2 return res ob = Solution() s = "())(()(" print(ob.solve(s))
輸入
"())(()("
輸出
4
廣告