更多精彩內(nèi)容,請關(guān)注【力扣簡單題】。
題目
難度:★★☆☆☆
類型:字符串
有效括號(hào)字符串為空 ("")、"(" + A + ")" 或 A + B,其中 A 和 B 都是有效的括號(hào)字符串,+ 代表字符串的連接。例如,"","()","(())()" 和 "(()(()))" 都是有效的括號(hào)字符串。
如果有效字符串 S 非空,且不存在將其拆分為 S = A+B 的方法,我們稱其為原語(primitive),其中 A 和 B 都是非空有效括號(hào)字符串。
給出一個(gè)非空有效字符串 S,考慮將其進(jìn)行原語化分解,使得:S = P_1 + P_2 + ... + P_k,其中 P_i 是有效括號(hào)字符串原語。
對 S 進(jìn)行原語化分解,刪除分解中每個(gè)原語字符串的最外層括號(hào),返回 S 。
提示
S.length <= 10000
S[i] 為 "(" 或 ")"
S 是一個(gè)有效括號(hào)字符串
示例
示例 1
輸入:"(()())(())"
輸出:"()()()"
解釋:
輸入字符串為 "(()())(())",原語化分解得到 "(()())" + "(())",
刪除每個(gè)部分中的最外層括號(hào)后得到 "()()" + "()" = "()()()"。
示例 2
輸入:"(()())(())(()(()))"
輸出:"()()()()(())"
解釋:
輸入字符串為 "(()())(())(()(()))",原語化分解得到 "(()())" + "(())" + "(()(()))",
刪除每隔部分中的最外層括號(hào)后得到 "()()" + "()" + "()(())" = "()()()()(())"。
示例 3
輸入:"()()"
輸出:""
解釋:
輸入字符串為 "()()",原語化分解得到 "()" + "()",
刪除每個(gè)部分中的最外層括號(hào)后得到 "" + "" = ""。
解答
我們使用一個(gè)實(shí)時(shí)變量l作為括號(hào)的層數(shù)標(biāo)記,每當(dāng)左括號(hào)出現(xiàn)時(shí),l+1,每當(dāng)右括號(hào)出現(xiàn)時(shí),l=l-1,l=1代表最外層,我們?nèi)>1的所有層即可。
class Solution:
def removeOuterParentheses(self, S: str) -> str:
l = 0
res = ''
for c in S:
if c == '(':
l += 1
if l > 1:
res += c
else:
if l > 1:
res += c
l -= 1
return res
如有疑問或建議,歡迎評(píng)論區(qū)留言~