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

2021-10-08 02:54:00 字數 1229 閱讀 5666

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

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

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