括号有效配对一箭三连(二)

简介: 1) 任何一个左括号都能找到和其正确配对的右括号2) 任何一个右括号都能找到和其正确配对的左括号问:如果括号无效,至少返回几个字符能让其整体有效

一、题目描述:


1) 任何一个左括号都能找到和其正确配对的右括号

2) 任何一个右括号都能找到和其正确配对的左括号

问:如果括号无效,至少返回几个字符能让其整体有效


示例:

示例 1:

输入:(())

输出:0


示例 2:

输入:(()

输出:1


示例 3:

输入:))

输出:2


示例 4:

输入:()))((()

输出:4


二、思路分析:


定义需要补充')'的括号个数need,'('的个数count。使用count,记录'('的个数,当遇到')'时,执行减一操作。每循环一次,判断一下count是否为负数,如果为负的话,需要补充的个数加一,再将count变为0即可。


例: s='())('

网络异常,图片无法展示
|

结果应该是所需要')'的括号个数need,再加上'('多余的个数count。


三、AC 代码:


function isValid(s) {
  let count = 0,
    need = 0
  for (let i = 0; i < s.length; i++) {
    count += s[i] === '(' ? 1 : -1
    if (count === -1) {
      need++
      count = 0
    }
  }
  return need + count
}


四、总结:


尽量考虑简单、高效的方法。使用两个变量,一个记录所需')'数,一个记录'('多余为撇配的个数。


作者:ClyingDeng

链接:https://juejin.cn/post/6951232138419109901

来源:稀土掘金

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

目录
相关文章
|
6月前
|
算法 测试技术 C#
【字符串】【括号匹配】【广度优先】301. 删除无效的括号
【字符串】【括号匹配】【广度优先】301. 删除无效的括号
【字符串】【括号匹配】【广度优先】301. 删除无效的括号
|
6月前
|
C++
HRBUST - 1170(判断括号是否匹配)
HRBUST - 1170(判断括号是否匹配)
|
6月前
C的if...else..配对
C的if...else..配对
22 0
|
存储 算法
算法训练day11|20. 有效的括号;1047. 删除字符串中的所有相邻重复项;150. 逆波兰表达式求值
算法训练day11|20. 有效的括号;1047. 删除字符串中的所有相邻重复项;150. 逆波兰表达式求值
|
C语言
符号配对 (20 分)
符号配对 (20 分)
199 0
089.配对新郎和新娘
089.配对新郎和新娘
106 0
|
前端开发 JavaScript 算法
有效的括号,成对字符合法性检测
每日算法练习,今天一起来看看“有效的括号,成对字符合法性检测”。
263 0
|
C语言
括号配对问题
括号配对问题
136 0
括号配对问题
括号有效配对一箭三连(三)
1) 任何一个左括号都能找到和其正确配对的右括号 2) 任何一个右括号都能找到和其正确配对的左括号 返回一个括号字符串中,最长的括号有效子串长度
155 0