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 ParenthesesMinimum Number of Swaps to Make the String Balanced.

跟上Minimum Insertions to Balance a Parentheses String.

posted @ 2019-12-12 08:24  Dylan_Java_NYC  阅读(258)  评论(0编辑  收藏  举报