您的位置:首页 > 其它

LeetCode 032 Longest Valid Parentheses

2016-05-18 09:45 393 查看
题目要求在由’(‘,’)’组成的字符串中找到最长合法子串,要求子串中括号配对合法。

思路:

合法子串的性质:

如果s是一个合法子串,那”(“+s+”)”也是合法子串。

所以可以用一个布尔数组记录字符串的某位是否属于一个合法子串。在布尔数组中找最长的连续true即可。

实现上,用一个栈记录当前等待配对的左括号位置。扫描整个字符串:

* 如果遇到左括号,把位置入栈。

* 如果遇到右括号:

** 如果栈空 什么都不做

** 否则把当前位置标记为true,把栈顶记录的位置也标记为true,弹出栈顶。

算法的时间复杂度为O(n),n为字符串长度。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode