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...