Given a string containing just the characters '('
and ')'
, find the length of the longest valid (well-formed) parentheses substring.
Example 1:
1 |
|
Example 2:
1 |
|
Related Topics:String
、Stack
、Dynamic Programming
解題邏輯與實作
這題算是 Valid Parentheses 的進階版,不過還是可以用 Stack 來解決。
Stack
由於我需要知道知道它們之間的距離,所以推入 stack 時我除了記錄括號外,也記錄他們的索引值。
- 開始前先
push ( -1, ')' )
進入 stack - 依序讀入字串
- 若遇到左括號,
push (index , '(' )
- 若遇到右括號,則檢查stack最上層
- 若為右括號,
push (index , ')' )
- 若為左括號,將其 pop 並檢查長度,檢查方式為:使用目前索引值減掉目前最上層的索引值後,與目前所記錄的最長合法長度取 max。
- 若為右括號,
- 若遇到左括號,
1 |
|
Dynamic Programming
Po 文前打 Tag 時才發現,這題的標籤是 DP 反而沒有 Stack 耶~!
所以…我逃避現實先,之後再來補好了….是說我欠了多少題的 DP 解了?
DP 參考作法 → 傳送門