題目
有效括號字符串為空 ("")骏掀、"(" + A + ")" 或 A + B宠纯,其中 A 和 B 都是有效的括號字符串卸夕,+ 代表字符串的連接。例如婆瓜,""快集,"()"贡羔,"(())()" 和 "(()(()))" 都是有效的括號字符串。
如果有效字符串 S 非空个初,且不存在將其拆分為 S = A+B 的方法乖寒,我們稱其為原語(primitive),其中 A 和 B 都是非空有效括號字符串院溺。
給出一個非空有效字符串 S楣嘁,考慮將其進(jìn)行原語化分解,使得:S = P_1 + P_2 + ... + P_k珍逸,其中 P_i 是有效括號字符串原語逐虚。
對 S 進(jìn)行原語化分解,刪除分解中每個原語字符串的最外層括號谆膳,返回 S 叭爱。
示例
輸入:"(()())(())"
輸出:"()()()"
解釋:
輸入字符串為 "(()())(())",原語化分解得到 "(()())" + "(())"漱病,
刪除每個部分中的最外層括號后得到 "()()" + "()" = "()()()"买雾。
輸入:"()()"
輸出:""
解釋:
輸入字符串為 "()()",原語化分解得到 "()" + "()"缨称,
刪除每個部分中的最外層括號后得到 "" + "" = ""凝果。
解題思路
//c++
class Solution {
string removeOuterParentheses(string s) {
string s_t = "";
int num_left = 0;//左括號個數(shù)
int temp_i = 0;//左括號下標(biāo)
for (int i = 1; i < s.length(); i++) {
if (s[i] == '(')
num_left++;
if (s[i] == ')') {
if (!(num_left--)) {
s_t += s.substr(temp_i+1, i - temp_i-1);
temp_i = i + 1;
}
}
}
return s_t;
}
};
這題比較簡單祝迂。