301 刪除無效的括號(高頻題)

2021-10-22 16:28:51 字數 1323 閱讀 6405

要用回溯演算法,一刷2021/3/19,沒有完全弄明白

最開始看到題目要求刪除最小括號數目,我想的是dp,但是最後它要你返回的又是字串的組合,所以就要回溯。

整體思路比較簡單:

統計出來多餘的左右括號

進行回溯

回溯中如果遇到多餘的括號還沒有全消除掉,那麼就選擇回溯消除

如果對應的多餘括號已經消除完了,那麼就新增到path進行回溯

class

solution

else

if(c ==

')')

else}}

// 回溯

backtracking

(ss,

newstringbuilder()

,0,0

,0,open

, close)

;return

newarraylist

(set);}

public

void

backtracking

(char

ss,

stringbuilder sb,

int index,

intopen

,int close,

int openrem,

int closerem)

return;}

// 去掉當前位置的字元(括號),並處理下乙個字元

if(ss[index]

=='('

&& openrem >

0|| ss[index]

==')'

&& closerem >0)

if(ss[index]

==')')}

// 不去掉當前位置字元

// 將當前位置字元插入sb

sb.(ss[index]);

// 當前位置不為括號,則直接處理下乙個字元

if(ss[index]

!='('

&& ss[index]

!=')'

)// 當前位置為左括號,增加左括號計數,處理下乙個字元

else

if(ss[index]

=='('

)// 當前位置為右括號,且當前左括號計數大於右括號計數,則增加右括號計數,處理下乙個字元

elseif(

open

> close)

// 撤銷選擇

sb.deletecharat

(sb.

length()

-1);

}}

301 刪除無效的括號 Leecode刷題

刷了乙個困難題,一如既往做不出來,然後看題解,然後再自己打一遍 記錄這個題的原因是,這其實是一類題目!先看看題目再分析。題目描述 刪除最小數量的無效括號,使得輸入的字串有效,返回所有可能的結果。說明 輸入可能包含了除 和 以外的字元。示例 1 輸入 輸出 示例 2 輸入 a 輸出 a a 示例 3 ...

301 刪除無效的括號(BFS)

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

leetcode301 刪除無效的括號

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