leetcode 301 刪除無效的括號

2021-10-09 03:59:47 字數 1412 閱讀 5563

301. 刪除無效的括號

刪除最小數量的無效括號,使得輸入的字串有效,返回所有可能的結果。

說明: 輸入可能包含了除 ( 和 ) 以外的字元。

示例 1:

輸入: 「()())()」

輸出: ["()()()", 「(())()」]

示例 2:

輸入: 「(a)())()」

輸出: ["(a)()()", 「(a())()」]

示例 3:

輸入: 「)(」

輸出: [""]

這道題的問題是最小刪除次數,所以這裡優先選用 bfs.

#使用棧來判斷是否合法

stack =

for i in

range

(len

(s))

:if s[i]

=='('

:'('

)elif s[i]

==')'

:if stack:

stack.pop(

)else

:return

false

return

true

ifnot stack else

false

level =

#建立第乙個層級,這個層級沒有刪除元數

# print(level)

while level:

#層次bfs

res =

for s in level:

#找這個層級內的合法字串

if isvalid(s)

:if res !=

:return res

next_level =

set(

)#建立下乙個層級

for s in level:

for i in

range

(len

(s))

:if s[i]in[

'(',

')']

:#對當前層級的每乙個字串的每乙個括號,進行刪除後加入集合

next_level.add(s[

:i]+s[i+1:

])level = next_level#集合的賦值,變成當前集合

leetcode301 刪除無效的括號

刪除最小數量的無效括號,使得輸入的字串有效,返回所有可能的結果。說明 輸入可能包含了除 和 以外的字元。示例 1 輸入 輸出 示例 2 輸入 a 輸出 a a 示例 3 輸入 輸出 class solution object def isvalid self,s count 0 for c in s...

LeetCode 301 刪除無效的括號(回溯)

刪除最小數量的無效括號,使得輸入的字串有效,返回所有可能的結果。說明 輸入可能包含了除 和 以外的字元。示例 1 輸入 輸出 示例 2 輸入 a 輸出 a a 示例 3 輸入 輸出 class solution void dfs string s,int idx,string t,int l,int...

301 刪除無效的括號(BFS)

刪除最小數量的無效括號,使得輸入的字串有效,返回所有可能的結果。說明 輸入可能包含了除 和 以外的字元。示例 1 輸入 輸出 示例 2 輸入 a 輸出 a a 示例 3 輸入 輸出 思路 廣度優先 bfs 廣度優先 bfs public listremoveinvalidparentheses st...