ETH官方钱包

前往
大廳
主題

LeetCode - 1249. Minimum Remove to Make Valid Parentheses 解題心得

Not In My Back Yard | 2022-08-13 12:00:15 | 巴幣 0 | 人氣 291

題目連結(jié):


題目意譯:
給定一個(gè)包含 '(' 、')' 和小寫(xiě)英文字母的字串 s。

你的任務(wù)是移除最少的括號(hào)(在任意位置的 '(' 或是 ')')使得得到的括號(hào)字串是合法的,並回傳任何一個(gè)合法的字串。

更正式地說(shuō),一個(gè)括號(hào)字串是合法的若且唯若:
如果其為空字串、只包含小寫(xiě)英文字母,抑或是
其可以被寫(xiě)為 AB(A 串接著 B),其中 A 和 B 為合法字串,又或是
其可以被寫(xiě)為 (A),其中 A 為一合法字串。

限制:
1 ≦ s.length ≦ 10 ^ 5
s[i] 只會(huì)是 '(' 、')' 或是小寫(xiě)英文字母。



範(fàn)例測(cè)資:
範(fàn)例 1:
輸入: s = "lee(t(c)o)de)"
輸出: "lee(t(c)o)de"
解釋?zhuān)?"lee(t(co)de)"  、  "lee(t(c)ode)" 也是可以被接受的。

範(fàn)例 2:
輸入: s = "a)b(c)d"
輸出: "ab(c)d"

範(fàn)例 3:
輸入: s = "))(("
輸出: ""
解釋?zhuān)?一個(gè)空字串也是合法的。


解題思維:
基本上就是括號(hào)匹配的問(wèn)題(如這題),只是當(dāng)我們遇到不平衡(也就是遇到會(huì)使字串不合法的括號(hào))的時(shí)候,我們就先標(biāo)記該括號(hào)(直接移除的話,最糟就是全部字元被移除,這個(gè)情況下會(huì)跑很久)。

然後判斷完後,掃一次字串然後把那些沒(méi)有被標(biāo)記的字元通通依序丟到一個(gè)新的字串。而這個(gè)新字串將會(huì)是用盡可能少的括號(hào)移除所得到的合法字串,因此其為所求。




此次分享到此為止,如有任何更加簡(jiǎn)潔的想法或是有說(shuō)明不清楚之地方,也煩請(qǐng)各位大大撥冗討論。

創(chuàng)作回應(yīng)

更多創(chuàng)作