• 921. 使括号有效的最少添加


     

    难度中等

    给定一个由 '(' 和 ')' 括号组成的字符串 S,我们需要添加最少的括号( '(' 或是 ')',可以在任何位置),以使得到的括号字符串有效。

    从形式上讲,只有满足下面几点之一,括号字符串才是有效的:

    • 它是一个空字符串,或者
    • 它可以被写成 AB (A 与 B 连接), 其中 A 和 B 都是有效字符串,或者
    • 它可以被写作 (A),其中 A 是有效字符串。

    给定一个括号字符串,返回为使结果字符串有效而必须添加的最少括号数。

    示例 1:

    输入:"())"
    输出:1
    

    示例 2:

    输入:"((("
    输出:3
    

    示例 3:

    输入:"()"
    输出:0
    

    示例 4:

    输入:"()))(("
    输出:4

    提示:

    1. S.length <= 1000
    2. S 只包含 '(' 和 ')' 字符。
    class Solution {
    public:
        int minAddToMakeValid(string s) {
            int l_cnt =0;
            int r_cnt = 0;
            int res = 0;
            for(int i = 0; i < s.size();i++) {
                if (s[i] == '(') l_cnt++;
                else  r_cnt++;
                if (r_cnt>l_cnt) {
                    res++;
                    l_cnt++;
                }
            }        
            r_cnt = l_cnt = 0;
            for(int i = s.size()-1; i >= 0;i--) {
                if (s[i] == '(') l_cnt++;
                else r_cnt++;
                if (l_cnt>r_cnt) {
                    res++;
                    r_cnt++;
                }
            }
            return res;
        }
    };
  • 相关阅读:
    Elastic-Job
    Redis之Ubuntu下Redis集群搭建
    设计模式之单例模式
    设计模式之简单工厂模式
    Java集合(一)HashMap
    数据结构和算法(四)归并排序
    数据结构和算法(三)希尔排序
    数据结构和算法(二)插入排序
    博客转移通知
    C语言回调函数总结
  • 原文地址:https://www.cnblogs.com/zle1992/p/15971435.html
Copyright © 2020-2023  润新知