32. longest valid parentheses
given a string containing just the characters'('
and')'
, find the length of the longest valid (well-formed) parentheses substring.
for"(()"
, the longest valid parentheses substring is"()"
, which has length = 2.
another example is")()())"
, where the longest valid parentheses substring is"()()"
, which has length = 4.
時間 o(n) 空間 o(n)
用stack的方法本質上和valid parentheses是一樣的,乙個右括號能消去stack頂上的乙個左括號。不同的是,為了能夠計算括號對的長度我們還需要記錄括號們的下標。這樣在彈出乙個左括號後,我們可以根據當前座標減去棧中上乙個(也就是pop過後的top元素)的座標來得到該有效括號對的長度。
public class solution else else
maxlen = math.max(maxlen, curlen);
} else }}
return maxlen;
}}
也可用動態規劃的思想,但是沒太看明白
時間 o(n) 空間 o(n)
動態規劃法將大問題化為小問題,我們不一定要一下子計算出整個字串中最長括號對,我們可以先從後向前,一點一點計算。假設d[i]是從下標i開始到字串結尾最長括號對長度,s[i]是字串下標為i的括號。如果s[i-1]是左括號,如果i + d[i] + 1是右括號的話,那d[i-1] = d[i] + 1。如果不是則為0。如果s[i-1]是右括號,因為不可能有右括號開頭的括號對,所以d[i-1] = 0。
public
class
solution }}
maxlen = math.max(maxlen, dp[i]);
}return maxlen;
}}
LeetCode題目以及答案
1 給定乙個整數陣列和乙個目標值,找出陣列中和為目標值的兩個數,你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 7 9 所以返回 0,1 複雜版 usr bin python coding...
LeetCode題目以及答案(9)
題目 有兩種特殊字元。第一種字元可以用一位元0來表示。第二種字元可以用兩位元 10 或 11 來表示。現給乙個由若干位元組成的字串。問最後乙個字元是否必定為乙個一位元字元。給定的字串總是由0結束。示例 1 輸入 bits 1,0,0 輸出 true 解釋 唯一的編碼方式是乙個兩位元字元和乙個一位元字...
LeetCode題目以及答案 10
題目 給乙個非負整數 num,反覆新增所有的數字,直到結果只有乙個數字。例如 設定 num 38,過程就像 3 8 11,1 1 2。由於 2 只有1個數字,所以返回它。高階 你可以不用任何的迴圈或者遞迴演算法,在 o 1 的時間內解決這個問題麼?思路 巢狀兩次迴圈即可 usr bin env py...