刪除最小數量的無效括號,使得輸入的字串有效,返回所有可能的結果。
說明: 輸入可能包含了除(
和)
以外的字元。
示例 1
:輸入:
"()())()"
輸出:[
"()()()"
,"(())()"
]示例 2
:輸入:
"(a)())()"
輸出:[
"(a)()()"
,"(a())()"
]示例 3
:輸入:
")("
輸出:[
""]
class
solution
void
dfs(string& s,
int idx, string t,
int l,
int r,
int del)
else
if(l==r && del == mindel)
ans.
insert
(t);
return;}
if(s[idx]
!='('
&& s[idx]
!=')'
)//不是括號,加上,跳過
return
dfs(s, idx+
1, t+s[idx]
, l, r, del);if
(s[idx]
=='('
) l++
;else
if(s[idx]
==')'
) r++;if
(l >= r)
//左括號在過程中一直》=右括號
dfs(s, idx+
1, t+s[idx]
, l, r, del)
;//不刪除
if(s[idx]
=='('
) l--
;//回溯
else
if(s[idx]
==')'
) r--
;//回溯
if(l >= r)
dfs(s, idx+
1,t, l, r, del+1)
;//刪除}}
;
152 ms 22 mb
我的csdn部落格位址
leetcode301 刪除無效的括號
刪除最小數量的無效括號,使得輸入的字串有效,返回所有可能的結果。說明 輸入可能包含了除 和 以外的字元。示例 1 輸入 輸出 示例 2 輸入 a 輸出 a a 示例 3 輸入 輸出 class solution object def isvalid self,s count 0 for c in s...
leetcode 301 刪除無效的括號
301.刪除無效的括號 刪除最小數量的無效括號,使得輸入的字串有效,返回所有可能的結果。說明 輸入可能包含了除 和 以外的字元。示例 1 輸入 輸出 示例 2 輸入 a 輸出 a a 示例 3 輸入 輸出 這道題的問題是最小刪除次數,所以這裡優先選用 bfs.使用棧來判斷是否合法 stack for...
301 刪除無效的括號(BFS)
刪除最小數量的無效括號,使得輸入的字串有效,返回所有可能的結果。說明 輸入可能包含了除 和 以外的字元。示例 1 輸入 輸出 示例 2 輸入 a 輸出 a a 示例 3 輸入 輸出 思路 廣度優先 bfs 廣度優先 bfs public listremoveinvalidparentheses st...