Java——使括号有效的最少添加

news/2024/7/9 4:14:36

题目链接

leetcode在线oj题——使括号有效的最少添加

题目描述

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

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

给定一个括号字符串 s ,在每一次操作中,你都可以在字符串的任何位置插入一个括号

  • 例如,如果 s = “()))” ,你可以插入一个开始括号为 “(()))” 或结束括号为 “())))” 。

返回 为使结果字符串 s 有效而必须添加的最少括号数。

题目示例

输入:s = “())”
输出:1

输入:s = “(((”
输出:3

题目提示

  • 1 <= s.length <= 1000
  • s 只包含 ‘(’ 和 ‘)’ 字符。

解题思路

这道题的意思是,想要把字符串变成类似(…(())…)这种形式需要添加多少个括号

我们一般使用具有先进后出特性的栈来解决括号匹配的问题,而对于这道题,由于只有一种类型的括号,因此只需要计数即可

先分析一下以下几种情况:
如果第一个字符就是右括号,那么肯定没有左括号与之匹配,因此至少需要添加一个左括号
如果第一个字符是左括号,那么后面遇到任何一个右括号都可以与之匹配

我们初始化leftCount = 0,answer = 0,从头到尾遍历字符串的每一个字符
如果遇到左括号:
leftCount就++

如果遇到右括号:
如果leftCount<=0,说明答案需要添加一个左括号与之匹配,因此answer++
如果leftCount>0,那么就将前面的一个左括号与之匹配,因此leftCount–

代码

class Solution {
    public int minAddToMakeValid(String s) {
        int leftCount = 0;
        int answer = 0;
        for (int i = 0; i < s.length(); i++) {
            if(s.charAt(i) == '('){
                leftCount++;
            } else {
                if(leftCount > 0){
                    leftCount--;
                } else {
                    answer++;
                }
            }
        }
        answer += leftCount;
        return answer;
    }
}

http://lihuaxi.xjx100.cn/news/801327.html

相关文章

SpringBoot概述及基础配置

目录 一、SpringBoot概述 1、parent 2、starter 3、引导类 4、辅助功能&#xff08;内嵌tomcat&#xff09; 二、基础配置 1、修改服务器端口&#xff0c;日志 2、Idea中隐藏指定文件或指定类型文件&#xff1a; 一、SpringBoot概述 SpringBoot是由Pivotal团队提供的全…

sqlserver2012数据库,日志文件损坏修复

背景 服务器突然断电&#xff0c;导致数据库日志文件损坏&#xff0c;数据库无法启动。 本方案也同样适用于不小心删除数据库日志文件的情况。 相关报错 master数据库日志异常&#xff0c;导致数据库无法启动&#xff1a; 无法在数据库“master”(数据库 ID 为 1)的分配单元 …

亚商投资顾问 早餐FM/0203乡村振兴全面助力

01/亚商投资顾问早间导读商务部&#xff1a;下一步将继续稳定和扩大汽车消费进一步优化新能源汽车使用环境证监会&#xff1a;全力以赴抓好全面实行股票发行注册制改革《数字乡村建设指南》启动修订全面助力乡村振兴电动汽车、光伏产品、锂电池成为出口新增长点02/亚商投资顾问…

uniapp在微信小程序中图片宽度显示问题

在uniapp中,如果你的富文本图片显示宽度不正常,你可以通过设置图片的宽高属性来解决这个问题。例如,你可以在富文本中添加以下代码来设置图片的宽度为100%: <img src="your_image_url" style="width: 100%" />另外,如果你想设置图片的高度,你可…

MybatisPlus多表查询之零sql编写实现

1.前言 年初节奏还没有快起来&#xff0c;适合做做技术前瞻&#xff0c;无论是对个人还是团队都是好事。真要说分享&#xff0c;其实感觉也没啥好分享的&#xff0c;就像接手新项目一样&#xff0c;代码都是自己看&#xff0c;别人讲的再多&#xff0c;不看&#xff0c;不用&am…

互联网摸鱼日报(2023-02-03)

互联网摸鱼日报&#xff08;2023-02-03&#xff09; InfoQ 热门话题 管理不好软件复杂度&#xff0c;大厦倾颓随时可能发生 | 独家对话《代码大全》作者 又一个让马斯克害怕的“推特杀手”出现了 2022 中国开源年度报告 更高性能表现&#xff0c;一文解读高精度计算数据类型…

图解最常用的 10 个机器学习算法

在机器学习领域&#xff0c;有种说法叫做“世上没有免费的午餐”&#xff0c;简而言之&#xff0c;它是指没有任何一种算法能在每个问题上都能有最好的效果&#xff0c;这个理论在监督学习方面体现得尤为重要。 举个例子来说&#xff0c;你不能说神经网络永远比决策树好&#…

uniapp APP分享;判断用户是否安装APP,已安装直接打开,未安装跳转下载页;uniapp 在外部打开APP(schemes)

场景&#xff1a; A将某商品分享给B&#xff0c;B点击后判断是否安装APP&#xff0c;若安装直接打开&#xff0c;没有安装则跳转下载页&#xff1b; 知识点&#xff1a; uniapp APP分享&#xff1b;判断用户是否安装APP&#xff0c;已安装直接打开&#xff0c;未安装跳转下载…