题目:
最长连续有效括号序列。
解法1:栈
记录配对成功的括号下标,统计连续的最大长度。一对配对的括号,其内部一定全都配对了。
解法2:
只包含一个配对串的括号串有以下几种形态:
(valid)
))(valid)((
))(valid)
(((valid)
(valid)((
(valid)))
任何一个给定的括号串一定是上面的组合,现在采取两种遍历方法,分别统计给定括号串中上述6种形态的长度。
- 从左到右,统计1,2,3,5,6。
原则:忽略首先碰到的)
。
左括号数left<右括号数right
时,两数全部清0。
left==right
时,说明检测到一个有效的串,记录其长度,继续统计。
left>right
时,继续统计。 - 从右到左,统计1,2,3,4,5。
原则:忽略首先碰到的(
。
左括号数left>右括号数right
时,两数全部清0。
left==right
时