使括号有效的最少添加
时间:2022-07-24
本文章向大家介绍使括号有效的最少添加,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
使括号有效的最少添加
给定一个由(
和)
括号组成的字符串S
,我们需要添加最少的括号(
或是)
,可以在任何位置,以使得到的括号字符串有效。
从形式上讲,只有满足下面几点之一,括号字符串才是有效的:
- 它是一个空字符串。
- 它可以被写成
AB
,即A
与B
连接, 其中A
和B
都是有效字符串。 - 它可以被写作
(A)
,其中A
是有效字符串。 给定一个括号字符串,返回为使结果字符串有效而必须添加的最少括号数。
示例
输入:"())"
输出:1
输入:"((("
输出:3
输入:"()"
输出:0
输入:"()))(("
输出:4
题解
/**
* @param {string} S
* @return {number}
*/
var minAddToMakeValid = function(s) {
var left=0, right=0;
Array.prototype.forEach.call(s, v => {
if(v === "("){
++left;
}else{
if(left > 0) --left;
else ++right;
}
})
return left+right;
};
思路
直接遍历一遍,遍历过程中统计好左括号的数量,然后根据遇到右括号的情况来判断是否需要补充右括号,并统计左右括号多余的数量,匹配部分则直接减掉,首先定义左括号多余的括号数量left
以及右括号多余的括号数量right
,遍历过程中如果遇到左括号,则认为多余左括号+1
,如果遇到右括号,首先判断是否有多余左括号,如果有多余左括号就作为左括号的匹配,将多余左括号-1
,如果已经没有左括号,那么认为有多余右括号,则将多余右括号+1
,最后返回多余左括号与多余右括号的数量,即需要补充的右括号与左括号的数量即可。
每日一题
https://github.com/WindrunnerMax/EveryDay
参考
https://leetcode-cn.com/problems/minimum-add-to-make-parentheses-valid
- Java基础12 类型转换与多态
- linux(七)之linux系统中查找文件
- apache配置多站点
- linux(六)之文本操作
- Java基础11 对象引用
- maven 3.3.9 for windows 配置
- JS魔法堂:再次认识Function.prototype.call
- MySQL(六)之MySQL常用操作符
- 无人驾驶的基本算法及简单介绍
- CentOS6.5安装Java 8以及Tomcat8
- Java基础06 组合
- 警告:MySQL-server-5.6.21-1.linux2.6.x86_64.rpm: 头V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY
- MySQL(五)之DDL(数据定义语言)与六大约束
- Java基础08 继承
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法