zoukankan      html  css  js  c++  java
  • 921.使括号有效的最少添加

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

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

    它是一个空字符串,或者
    它可以被写成 AB (A 与 B 连接), 其中 A 和 B 都是有效字符串,或者
    它可以被写作 (A),其中 A 是有效字符串。
    给定一个括号字符串,返回为使结果字符串有效而必须添加的最少括号数。

    示例 1:

    输入:"())"
    输出:1
    示例 2:

    输入:"((("
    输出:3
    示例 3:

    输入:"()"
    输出:0
    示例 4:

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

    提示:

    S.length <= 1000
    S 只包含 '(' 和 ')' 字符。

    用left来记录不能匹配的左括号,right记录不能匹配的右括号。

    如果先出现左括号,left+1。

    出现右括号的话,有两种情况,存在没有匹配的左括号,那么left-1,right不变。如果左括号全都匹配或者没有出现,right+1。

    返回值是left+right。

    class Solution {
        public int minAddToMakeValid(String S) {
            int left = 0;
            int right = 0;
            for(int i = 0; i < S.length(); i++) {
                if(S.charAt(i) == '(') {
                    left++;
                }else {
                    if(left != 0) {
                        left--;
                    }else {
                        right++;
                    }
                }
            }
            System.out.print(left + right);
            return left + right;
        }
    }
    
  • 相关阅读:
    CSS的学习
    nodejs
    eureka注册中心
    netty的机制
    分布式事务
    spring cloud的基础
    一个发散动画的菜单控件(主要记录控件x,y坐标的运动状况)
    关于ViewPager高度自适应(随着pager页的高度改变Viewpager的高度)
    ViewPager的使用总结
    Android实现沉浸式状态栏(必须高逼格)
  • 原文地址:https://www.cnblogs.com/Jiewl/p/12584710.html
Copyright © 2011-2022 走看看