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

简介: 1) 任何一个左括号都能找到和其正确配对的右括号2) 任何一个右括号都能找到和其正确配对的左括号问题一: 怎么判断一个括号字符串有效问题二:括号最多嵌套几层

一、题目描述:


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

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


问题一: 怎么判断一个括号字符串有效

问题二:括号最多嵌套几层


示例:

问题一示例

输入:(()) 输出:true

输入:()() 输出:true

输入:(()()) 输出:true

输入:(() 输出:false

输入:)( 输出:false


问题二示例

输入:(()) 输出:2

输入:(()()) 输出:2

输入:(()(())) 输出:3


二、思路分析:


问题一:


使用一个变量count,记录'('的个数,当遇到')'时,执行减一操作。最后判断count是否为0,等于0表示括号字符串正好配对,否则不匹配。


问题二:


括号最多嵌套几层可以沿用问题一的方法,使用变量记录'('的个数,遇到')'时,执行减一操作。使用max记录count最大值,返回max即可。


三、AC 代码:


// 问题一
function isVlid(s) {
  let count = 0
  for (let i = 0; i < s.length; i++) {
    s[i] === '(' ? count++ : count--
  }
  return count === 0;
}
// 问题二
function deep(s) {
  let count = 0
  let max = 0
  for (let i = 0; i < s.length; i++) {
    s[i] === '(' ? count++ : count--
    max = Math.max(max, count)
  }
  return max
}


四、总结:


对于括号的配对是属于一个大的类型题目,我们可以使用栈、对象着手解决,但是解决问题的同时,我们尽可能的需要降低运算的复杂度。


作者:ClyingDeng

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

来源:稀土掘金

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

目录
相关文章
|
4月前
|
算法 测试技术 C#
【字符串】【括号匹配】【广度优先】301. 删除无效的括号
【字符串】【括号匹配】【广度优先】301. 删除无效的括号
【字符串】【括号匹配】【广度优先】301. 删除无效的括号
|
4月前
|
C++
HRBUST - 1170(判断括号是否匹配)
HRBUST - 1170(判断括号是否匹配)
|
4月前
C的if...else..配对
C的if...else..配对
14 0
|
存储 算法
算法训练day11|20. 有效的括号;1047. 删除字符串中的所有相邻重复项;150. 逆波兰表达式求值
算法训练day11|20. 有效的括号;1047. 删除字符串中的所有相邻重复项;150. 逆波兰表达式求值
蓝桥——括号合法组合 2020-11-26
蓝桥——括号合法组合 2020-11-26
|
算法 前端开发 JavaScript
【前端算法】判断一个字符串的括号是否成对匹配
使用typescript完成判断一个字符串的括号是否成对匹配的过程
120 0
089.配对新郎和新娘
089.配对新郎和新娘
100 0
|
前端开发 JavaScript 算法
有效的括号,成对字符合法性检测
每日算法练习,今天一起来看看“有效的括号,成对字符合法性检测”。
252 0
|
C语言
括号配对问题
括号配对问题
129 0
括号配对问题