Leetcode 1249 移除無效的括號 棧)

2021-10-06 16:57:11 字數 1109 閱讀 5150

給你乙個由 『(』、』)』 和小寫字母組成的字串 s。

你需要從字串中刪除最少數目的 『(』 或者 『)』 (可以刪除任意位置的括號),使得剩下的「括號字串」有效。

請返回任意乙個合法字串。

有效「括號字串」應當符合以下 任意一條 要求:

空字串或只包含小寫字母的字串

可以被寫作 ab(a 連線 b)的字串,其中 a 和 b 都是有效「括號字串」

可以被寫作 (a) 的字串,其中 a 是乙個有效的「括號字串」

示例 1:

輸入:s = 「))((」

輸出:""

解釋:空字串也是有效的

示例 4:

1 <= s.length <= 10^5

s[i] 可能是 『(』、』)』 或英文小寫字母

這道題有難度的,怎麼去除無效的括號,關於去除括號,很容易想到棧,很多括號的題,只要棧中配對了,那麼就pop

這道題中有字母,所以想要配對去除,就有一些麻煩,想了想,也只能將索引壓入棧中,配對後去除索引,再在string中去除

配對問題已經解決了,那麼接下來的問題是如何確定有效括號,我們知道每個』)『總是與它最近的』(『匹配,那麼每次都在遇到』)『時,判斷是否存在(,不存在的話,這就是無效的,而每次遇到』(『就將其存入棧中,遍歷結束後,將棧的剩下的』('也去除,就是最後有效的字串

class

solution

else}}

while

(!stack.

isempty()

) indexstoremove.

add(stack.

pop())

; stringbuilder sb=

newstringbuilder()

;for

(int i=

0;ilength()

;i++)}

return sb.

tostring()

;}}

Leetcode 1249 移除無效的括號

給你乙個由 和小寫字母組成的字串 s。你需要從字串中刪除最少數目的 或者 可以刪除任意位置的括號 使得剩下的 括號字串 有效。請返回任意乙個合法字串。有效 括號字串 應當符合以下 任意一條 要求 空字串或只包含小寫字母的字串 可以被寫作 ab a 連線 b 的字串,其中 a 和 b 都是有效 括號字...

LeetCode 1249 移除無效的括號

類似於括號匹配的問題,第一次自己寫的時候,提交了好幾次才過,思路就是使用棧,主要需要處理的就是找到哪些括號是匹配的那些是不匹配的。首先遇到 就進棧,遇到 需要分兩種情況,如果棧不為空的時候,說明之前有過 就出棧,代表找到一對匹配的,但是如果棧為空,說明 在還沒有出現 的時候就先出現了,那麼顯然出現的...

LeetCode 1249 移除無效的括號

題目大概的意思是輸入一組字串,字串包含小寫字母和 保留能匹配成一對的小括號,去掉多餘的 或者 答案可能會有多個,只需要輸出乙個正常的字串就可以。括號匹配,我們可以使用棧的資料結構來匹配成對的括號,遇到乙個左括號 就入棧,如果遇到乙個右括號 需要判斷棧是否為空 代表右括號前面是否有左括號跟它匹配 棧為...