類似於括號匹配的問題,第一次自己寫的時候,提交了好幾次才過,思路就是使用棧,主要需要處理的就是找到哪些括號是匹配的那些是不匹配的。首先遇到『(』就進棧,遇到『)』需要分兩種情況,如果棧不為空的時候,說明之前有過『(』,就出棧,代表找到一對匹配的,但是如果棧為空,說明『)』在還沒有出現『(』的時候就先出現了,那麼顯然出現的都是不匹配的,我們將這些不匹配的存入陣列中,最後遍歷完,在判斷棧是否為空,如果不為空,說明還有沒有匹配的『(』,這些也是不匹配的。知道所以不匹配的情況,就可以將這些不匹配的換成乙個字串中本來沒有的字元,給出的**中,我替換成了3,然後再替換成空字串就可以了。
參考**:
public string minremovetomakevalid
(string s)
if(c[i]
==')'
)else}}
for(
int i =
0; i < res; i++
)while
(!stack.
isempty()
) string str = string.
valueof
(c);
str = str.
replace
("3",""
);return str;
}
另一種解法用乙個boolean陣列標記每乙個位置,是否是匹配的,
參考**:
public string minremovetomakevalid
(string s)
if(s.
charat
(i)==
')')
else}}
for(
int i =
0; i < s.
length()
; i++)}
return result.
tostring()
;}
Leetcode 1249 移除無效的括號
給你乙個由 和小寫字母組成的字串 s。你需要從字串中刪除最少數目的 或者 可以刪除任意位置的括號 使得剩下的 括號字串 有效。請返回任意乙個合法字串。有效 括號字串 應當符合以下 任意一條 要求 空字串或只包含小寫字母的字串 可以被寫作 ab a 連線 b 的字串,其中 a 和 b 都是有效 括號字...
LeetCode 1249 移除無效的括號
題目大概的意思是輸入一組字串,字串包含小寫字母和 保留能匹配成一對的小括號,去掉多餘的 或者 答案可能會有多個,只需要輸出乙個正常的字串就可以。括號匹配,我們可以使用棧的資料結構來匹配成對的括號,遇到乙個左括號 就入棧,如果遇到乙個右括號 需要判斷棧是否為空 代表右括號前面是否有左括號跟它匹配 棧為...
Leetcode 1249 移除無效的括號 棧)
給你乙個由 和小寫字母組成的字串 s。你需要從字串中刪除最少數目的 或者 可以刪除任意位置的括號 使得剩下的 括號字串 有效。請返回任意乙個合法字串。有效 括號字串 應當符合以下 任意一條 要求 空字串或只包含小寫字母的字串 可以被寫作 ab a 連線 b 的字串,其中 a 和 b 都是有效 括號字...