最长有效括号算法的实现(JavaScript)
最长有效括号是一道经典的算法问题,要求在给定的字符串中找到最长的有效括号子串,并返回其长度。有效括号子串是指由 ‘(’ 和 ‘)’ 组成的子串,满足以下条件:
- 左右括号数量相等。
- 括号的顺序是有效的,即每个左括号都有与之对应的右括号。
下面我将详细介绍如何使用JavaScript实现这个算法。
算法思路:
我们可以使用栈来解决这个问题。具体步骤如下:
-
创建一个栈,用于存储字符的索引。
-
初始化变量
maxLen为0,用于记录最长有效括号子串的长度。 -
初始化变量
lastInvalidIndex为-1,用于记录最后一个无效右括号的索引。 -
遍历给定的字符串,对于每个字符:
- 如果是左括号’(',将其索引入栈。
- 如果是右括号’)',则有两种情况:
- 如果栈为空,表示当前右括号是无效的,更新
lastInvalidIndex为当前索引。 - 如果栈不为空,弹出栈顶元素,表示匹配了一个左括号。此时有两种情况:
- 如果栈为空,说明当前右括号匹配完了所有左括号,计算当前有效括号子串的长度,更新
maxLen。 - 如果栈不为空,计算当前有效括号子串的长度(当前索引减去栈顶元素的索引),更
- 如果栈为空,说明当前右括号匹配完了所有左括号,计算当前有效括号子串的长度,更新
- 如果栈为空,表示当前右括号是无效的,更新
本文介绍了如何使用JavaScript解决最长有效括号算法问题。通过创建栈存储字符索引,遍历字符串,利用栈判断有效括号子串,最终得到最长有效括号的长度。算法时间复杂度为O(n)。
订阅专栏 解锁全文
342

被折叠的 条评论
为什么被折叠?



