美文网首页LeeCode题目笔记
1021. Remove Outermost Parenthes

1021. Remove Outermost Parenthes

作者: 守住这块热土 | 来源:发表于2019-10-30 12:07 被阅读0次

    1. 题目链接:

    https://leetcode.com/problems/remove-outermost-parentheses/submissions/

    A valid parentheses string is either empty (""), "(" + A + ")", or A + B, where A and B are valid parentheses strings, and + represents string concatenation. For example, "", "()", "(())()", and "(()(()))" are all valid parentheses strings.

    A valid parentheses string S is primitive if it is nonempty, and there does not exist a way to split it into S = A+B, with A and B nonempty valid parentheses strings.

    Given a valid parentheses string S, consider its primitive decomposition: S = P_1 + P_2 + ... + P_k, where P_i are primitive valid parentheses strings.

    Return S after removing the outermost parentheses of every primitive string in the primitive decomposition of S.

    Example 1:
    Input: "(()())(())"
    Output: "()()()"
    Explanation:
    The input string is "(()())(())", with primitive decomposition "(()())" + "(())".
    After removing outer parentheses of each part, this is "()()" + "()" = "()()()".

    Example 2:
    Input: "(()())(())(()(()))"
    Output: "()()()()(())"
    Explanation:
    The input string is "(()())(())(()(()))", with primitive decomposition "(()())" + "(())" + "(()(()))".
    After removing outer parentheses of each part, this is "()()" + "()" + "()(())" = "()()()()(())".

    Example 3:
    Input: "()()"
    Output: ""
    Explanation:
    The input string is "()()", with primitive decomposition "()" + "()".
    After removing outer parentheses of each part, this is "" + "" = "".

    Note:
    S.length <= 10000
    S[i] is "(" or ")"
    S is a valid parentheses string


    2. 题目关键词

    • 难度等级:easy
    • 关键词:
    • 语言: C++

    3. 解题思路

    遍历字符串,如果"("数量于 ")" 数量一致,时,拼接它们之间的字符串。

    class Solution {
    public:
        string removeOuterParentheses(string S) {
            string sTmp;
            int num = 0;
            
            int index = 0;  // 元字符串
            
            for (int i = 0; i < S.length(); i++) {
                if (S[i] == '(') {
                    num++;
                }
                
                if (S[i] == ')') {
                    num--;
                }
                
                if (num == 0) {
                    sTmp += S.substr(index + 1, i - (index + 1)); // 拼接 :最外边 "(" 到 ")" 之间的字符串
                    index = i + 1;
                }
            }
            
            return sTmp;
        }
    };
    

    相关文章

      网友评论

        本文标题:1021. Remove Outermost Parenthes

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