zoukankan      html  css  js  c++  java
  • LeetCode 921. Minimum Add to Make Parentheses Valid

    原题链接在这里:https://leetcode.com/problems/minimum-add-to-make-parentheses-valid/

    题目:

    Given a string S of '(' and ')' parentheses, we add the minimum number of parentheses ( '(' or ')', and in any positions ) so that the resulting parentheses string is valid.

    Formally, a parentheses string is valid if and only if:

    • It is the empty string, or
    • It can be written as AB (A concatenated with B), where A and B are valid strings, or
    • It can be written as (A), where A is a valid string.

    Given a parentheses string, return the minimum number of parentheses we must add to make the resulting string valid.

    Example 1:

    Input: "())"
    Output: 1
    

    Example 2:

    Input: "((("
    Output: 3
    

    Example 3:

    Input: "()"
    Output: 0
    

    Example 4:

    Input: "()))(("
    Output: 4

    Note:

    1. S.length <= 1000
    2. S only consists of '(' and ')' characters.

    题解:

    When encountering (, leftCount++.

    When encountering ), and leftCount > 0, leftCount--.

    Otherwise, that means there is ) without (, res++.

    Eventually, if leftCount > 0, that means there is ( without ). res += leftCount.

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

    Space: O(1).

    AC Java:

     1 class Solution {
     2     public int minAddToMakeValid(String S) {
     3         if(S == null || S.length() == 0){
     4             return 0;
     5         }
     6         
     7         int res = 0;
     8         int leftCount = 0;
     9         for(int i = 0; i<S.length(); i++){
    10             char c = S.charAt(i);
    11             if(c == '('){
    12                 leftCount++;
    13             }else if(leftCount > 0){
    14                 leftCount--;
    15             }else{
    16                 res++;
    17             }
    18         }
    19         
    20         res += leftCount;
    21         return res;
    22     }
    23 }

    类似Remove Invalid ParenthesesMinimum Remove to Make Valid Parentheses.

  • 相关阅读:
    Linux05——用户操作
    租房子-----多选题
    查询
    增删
    PHP基础
    数据库--高级查询
    CRUD查询
    CRUD操作
    数据库
    轮播
  • 原文地址:https://www.cnblogs.com/Dylan-Java-NYC/p/12026861.html
Copyright © 2011-2022 走看看