• (字符串 栈) leetcode 921. 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 Bare 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.

    -------------------------------------------------------------------------------------------------------------------------------

    这个题是栈的基础题,不过可以用O(n)的时间复杂度和O(1)的空间复杂度来解这个问题。参考题解:https://leetcode.com/articles/minimum-add-to-make-parentheses-valid/

    C++代码:

    class Solution {
    public:
        int minAddToMakeValid(string S) {
            int ans = 0,bal = 0;
            for(int i = 0; i < S.size(); i++){
                bal += S[i] == '('?1:-1;
                if(bal == -1){
                    ans++;
                    bal++;
                }
            }
            return ans+bal;
        }
    };
  • 相关阅读:
    python读取csv数据(添加列名,指定分隔方式)
    loc_survived
    数据预处理
    hadoop 指令
    pd.concat
    DataFrame
    SQL左连接
    mysql mysql之把查询的结果保存到新表(小知识点)
    啦啦啦啦 mysql 授权
    ArrayList和LinkedList的区别以及优缺点
  • 原文地址:https://www.cnblogs.com/Weixu-Liu/p/10822557.html
Copyright © 2020-2023  润新知