一、题目描述:
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
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。