有效括號字符串爲空 ("")
、"(" + A + ")"
或 A + B
,其中 A
和 B
都是有效的括號字符串,+
表明字符串的鏈接。例如,""
,"()"
,"(())()"
和 "(()(()))"
都是有效的括號字符串。app
若是有效字符串 S
非空,且不存在將其拆分爲 S = A+B
的方法,咱們稱其爲原語(primitive),其中 A
和 B
都是非空有效括號字符串。ui
給出一個非空有效字符串 S
,考慮將其進行原語化分解,使得:S = P_1 + P_2 + ... + P_k
,其中 P_i
是有效括號字符串原語。spa
對 S
進行原語化分解,刪除分解中每一個原語字符串的最外層括號,返回 S
。code
示例 1:blog
輸入:"(()())(())" 輸出:"()()()" 解釋: 輸入字符串爲 "(()())(())",原語化分解獲得 "(()())" + "(())", 刪除每一個部分中的最外層括號後獲得 "()()" + "()" = "()()()"。
示例 2:rem
輸入:"(()())(())(()(()))" 輸出:"()()()()(())" 解釋: 輸入字符串爲 "(()())(())(()(()))",原語化分解獲得 "(()())" + "(())" + "(()(()))", 刪除每隔部分中的最外層括號後獲得 "()()" + "()" + "()(())" = "()()()()(())"。
示例 3:字符串
輸入:"()()" 輸出:"" 解釋: 輸入字符串爲 "()()",原語化分解獲得 "()" + "()", 刪除每一個部分中的最外層括號後獲得 "" + "" = ""。
提示:it
S.length <= 10000
S[i]
爲 "("
或 ")"
S
是一個有效括號字符串題解:一開始想用棧作,左推右敲,思路有了, 可是感受好麻煩,陷入思惟僵勢,後面偷偷摸摸看了一眼答案,才感受本身sb了。。使用一個計數器,左括號出現一次加一,當計數器值大於等於2時說明是io
內部括號,append進字符串便可,當出現右括號時計數器減一,計數器大於等於一時說明右括號是內部括號,也append進去便可。class
class Solution { public String removeOuterParentheses(String S) { StringBuilder builder = new StringBuilder(); int left = 0; for(int i=0;i<S.length();i++){ if(S.charAt(i)=='('){ left++; if(left>=2){ builder.append(S.charAt(i)); } }else{ left--; if(left>=1){ builder.append(S.charAt(i)); } } } return builder.toString(); } }