32. Longest Valid Parentheses

更新 發佈閱讀 7 分鐘
https://leetcode.com/problems/longest-valid-parentheses?envType=problem-list-v2&envId=rabvlt31

這題我想在資工系茁壯成長的人一定不陌生,完全就是各種程式課程的回憶。

關於括弧的題目我也做過不少,一開始看到這題標 hard 想說哈哈我一定秒殺,括弧我已經熟到不能再熟了。結果實際下去跑,各種邊界條件我愣是搞不定。演算法換了八百種,程式碼越寫越長,這題大該花了四小時有吧😃

最終我寫了一個土法煉鋼篇暴力的程式碼,雖然只 beat 5%,但總算還是寫出來了。

class Solution {
public:
int longestValidParentheses(string s) {
std::stack<char> par;
std::stack<int> score;
vector<int> par_len;
int ans = 0;
int temp = 0;

for (char p: s) {
temp = 0;
if(p == '(') {
par.push('(');
score.push(0);
}
else if(!par.empty()) {
par.pop();
if(score.top() == 0) {
score.pop();
while (!score.empty() && score.top() != 0) {
temp += score.top();
score.pop();
}
temp += 2;
score.push(temp);
ans = max(ans, temp);
}
else {

while (!score.empty() && score.top() != 0) {
temp += score.top();
score.pop();
}
score.pop();
while (!score.empty() && score.top() != 0) {
temp += score.top();
score.pop();
}
temp += 2;
score.push(temp);
ans = max(ans, temp);
}

}
else {
while (!score.empty()) {
score.pop();
}
}

}

return ans;
}
};

有空再來談談我當時的腦迴路。

Best Solution

在點開討論區前,我已經做好被爆擊的準備了。畢竟這是一題經典的 stack 題目,我總是感覺他能夠被簡單的以 stack 化解,但我就是寫不出 AC 版本,歐嗚痛苦~

class Solution {
public:
int longestValidParentheses(string s) {
stack<int> st;
st.push(-1);
int max_len = 0;

for (int i = 0; i < s.length(); i++) {
if (s[i] == '(') {
st.push(i);
} else {
st.pop();
if (st.empty()) {
st.push(i);
} else {
max_len = max(max_len, i - st.top());
}
}
}

return max_len;
}
};

這都是些啥!!!只有 23 行!!!

驚呆了這個解法其實想法很簡單,不會很難知道他在寫什麼,卻很難自己想出來,leetcode 討論區是什麼聰明人的聚集地嗎?

抽象 high level 的去說,這個 i 指的是右括弧位置,st.top() 不是左括弧!因為左括弧被 pop 掉了 (line 12)。st.stop是指這整個合法的連續括弧的前一個不合法位置,所以用 i - st.top() 就是整個合法的長度!

太厲害了請收下我膝蓋。


留言
avatar-img
星星在晚上的時候不睡覺
0會員
13內容數
資工系的勞碌人生
2026/01/05
https://leetcode.com/problems/random-pick-with-weight?envType=problem-list-v2&envId=rabvlt31 這題我完全是土法煉鋼,因此跑出來的成績不好不意外哈哈哈。 class Solution { public:
2026/01/05
https://leetcode.com/problems/random-pick-with-weight?envType=problem-list-v2&envId=rabvlt31 這題我完全是土法煉鋼,因此跑出來的成績不好不意外哈哈哈。 class Solution { public:
2026/01/05
https://leetcode.com/problems/maximum-matrix-sum?envType=daily-question&envId=2026-01-05 這一題我願稱之為腦筋急轉彎之騙到我了。 經過了 542 的洗禮後,我看到每個題目都想了想是否可以用 queue 解。這
2026/01/05
https://leetcode.com/problems/maximum-matrix-sum?envType=daily-question&envId=2026-01-05 這一題我願稱之為腦筋急轉彎之騙到我了。 經過了 542 的洗禮後,我看到每個題目都想了想是否可以用 queue 解。這
2026/01/05
https://leetcode.com/problems/01-matrix?envType=problem-list-v2&envId=rabvlt31 熊熊發現最近我好像特愛暴力法...這題我的解法就是暴力破解,沒什麼含金量,程式碼又臭又長,beat 5%的 runtime and memo
2026/01/05
https://leetcode.com/problems/01-matrix?envType=problem-list-v2&envId=rabvlt31 熊熊發現最近我好像特愛暴力法...這題我的解法就是暴力破解,沒什麼含金量,程式碼又臭又長,beat 5%的 runtime and memo
看更多
你可能也想看
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
題目 : 9. Palindrome Number
Thumbnail
題目 : 9. Palindrome Number
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
題目 : 69. Sqrt(x)
Thumbnail
題目 : 69. Sqrt(x)
Thumbnail
題目 : 121. Best Time to Buy and Sell Stock
Thumbnail
題目 : 121. Best Time to Buy and Sell Stock
Thumbnail
題目 : 28. Find the Index of the First Occurrence in a String
Thumbnail
題目 : 28. Find the Index of the First Occurrence in a String
Thumbnail
題目 : 100. Same Tree
Thumbnail
題目 : 100. Same Tree
Thumbnail
題目 : 35. Search Insert Position
Thumbnail
題目 : 35. Search Insert Position
Thumbnail
題目 : 83. Remove Duplicates from Sorted List
Thumbnail
題目 : 83. Remove Duplicates from Sorted List
Thumbnail
題目:66. Plus One
Thumbnail
題目:66. Plus One
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News