美文网首页
LeetCode-1021-删除最外层的括号

LeetCode-1021-删除最外层的括号

作者: 阿凯被注册了 | 来源:发表于2020-10-20 08:09 被阅读0次

    有效括号字符串为空 ("")、"(" + A + ")" 或 A + B,其中 A 和 B 都是有效的括号字符串,+ 代表字符串的连接。例如,"","()","(())()" 和 "(()(()))" 都是有效的括号字符串。
    如果有效字符串 S 非空,且不存在将其拆分为 S = A+B 的方法,我们称其为原语(primitive),其中 A 和 B 都是非空有效括号字符串。
    给出一个非空有效字符串 S,考虑将其进行原语化分解,使得:S = P_1 + P_2 + ... + P_k,其中 P_i 是有效括号字符串原语。
    对 S 进行原语化分解,删除分解中每个原语字符串的最外层括号,返回 S 。


    image.png

    解题思路

    1. 栈;
    2. 遍历S,当为左括号时,判断栈内是否有左括号,如果有,说明当前遍历的左括号有效,存入res,如果没有,说明当天遍历的左括号为最外层左括号,压入栈中;
    3. 当为右括号时,栈内弹出一个左括号,再判断栈内是否包含左括号,如果没有,则表示当前右括号为最外层右括号,无需操作,如果栈内还有左括号,表示当前右括号为内层右括号,存入res。

    Python3代码:

    class Solution:
        def removeOuterParentheses(self, S: str) -> str:
            res, stack = '', []
            for s in S:
                if s == '(':
                    if stack:
                        res += '('
                    stack.append('(')
                elif s==')':
                    stack.pop()
                    if stack:
                        res += ')'     
            return res
    

    相关文章

      网友评论

          本文标题:LeetCode-1021-删除最外层的括号

          本文链接:https://www.haomeiwen.com/subject/dtubpktx.html