• LeetCode 1021. Remove Outermost Parentheses


    原题链接在这里:https://leetcode.com/problems/remove-outermost-parentheses/

    题目:

    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:

    1. S.length <= 10000
    2. S[i] is "(" or ")"
    3. S is a valid parentheses string

    题解:

    Count open parentheses, when it is (, count++. If it is outermost (, count == 1 now and skip.

    When it is ), count--. If it is outermost ), count == 0 now and skip.

    Otherwise append it to StringBuilder.

    Time Complexity: O(n). n = S.length().

    Space: O(n).

    AC Java:

     1 class Solution {
     2     public String removeOuterParentheses(String S) {
     3         int count = 0;
     4         StringBuilder sb = new StringBuilder();
     5         for(int i = 0; i<S.length(); i++){
     6             char c = S.charAt(i);
     7             if(c == '('){
     8                 count++;
     9                 if(count == 1){
    10                     continue;
    11                 }
    12             }else{
    13                 count--;
    14                 if(count == 0){
    15                     continue;
    16                 }
    17             }
    18             
    19             sb.append(c);
    20         }
    21         
    22         return sb.toString();
    23     }
    24 }
  • 相关阅读:
    python的虚拟环境管理
    树的转换
    表达式·表达式树·表达式求值
    找和为K的两个元素
    最大奇数与最小偶数之差的绝对值
    L1-026 I Love GPLT (5分)
    L1-025 正整数A+B (15分)
    L1-024 后天 (5分)
    L1-023 输出GPLT (20分)
    L1-022 奇偶分家 (10分)
  • 原文地址:https://www.cnblogs.com/Dylan-Java-NYC/p/12079002.html
Copyright © 2020-2023  润新知