示例 1:
输入:"(()())(())"
输出:"()()()"
解释:
输入字符串为 "(()())(())",原语化分解得到 "(()())" + "(())",
删除每个部分中的最外层括号后得到 "()()" + "()" = "()()()"。
示例 2:
输入:"(()())(())(()(()))"
输出:"()()()()(())"
解释:
输入字符串为 "(()())(())(()(()))",原语化分解得到 "(()())" + "(())" + "(()(()))",
删除每隔部分中的最外层括号后得到 "()()" + "()" + "()(())" = "()()()()(())"。
示例 3:
输入:"()()"
输出:""
解释:
输入字符串为 "()()",原语化分解得到 "()" + "()",
删除每个部分中的最外层括号后得到 "" + "" = ""。
提示:
S.length <= 10000
S[i] 为 "(" 或 ")"
S 是一个有效括号字符串
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/remove-outermost-parentheses
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
i = 0
的符号‘(’
(不入栈)class Solution {
public:
string removeOuterParentheses(string S) {
stack<char> stk;
string innerStr("");
for(int i = 1; i < S.size(); ++i)
{//跳过i=0的外层括号(
if(S[i] == ')')
{
if(stk.empty())//不能匹配,说明是外层
{
i += 1;//跳过外层
continue;
}
else
{
innerStr.push_back(S[i]);
stk.pop();
}
}
else// S[i] == '('
{
stk.push(S[i]);
innerStr.push_back(S[i]);
}
}
return innerStr;
}
};