码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode 32. Longest Valid Parentheses

时间:2018-10-27 23:37:05      阅读:320      评论:0      收藏:0      [点我收藏+]

标签:tput   nta   substr   复杂   ali   位置   code   ref   add   

Given a string containing just the characters ‘(‘ and ‘)‘, find the length of the longest valid (well-formed) parentheses substring.

Example 1:

Input: "(()"
Output: 2
Explanation: The longest valid parentheses substring is "()"

Example 2:

Input: ")()())"
Output: 4
Explanation: The longest valid parentheses substring is "()()"

Seen this question in a real interview before?  

 

这道题比之“验证括号是否有效”要难一些,但是思路类似,也是借助栈,栈中村的是括号的下标,遇到左括号将其下标入栈;遇到右括号将栈定下标弹出并计算有效长度,同时记录下来当前最大长度,这里为了方便起见,我们一开始在栈中放了下标-1,用来表示最开始的位置,时间和空间复杂度都是O(N)

 1 class Solution {
 2 public:
 3     int longestValidParentheses(string s) {
 4         stack<int> sta;
 5         int maxRes = 0;
 6         sta.push(-1);
 7         for (int i = 0; i < s.size(); i++ )
 8         {
 9             if (s[i] == ()
10                 sta.push(i);
11             else
12             {
13                 sta.pop();
14                 if (sta.empty())
15                     sta.push(i);
16                 else
17                     maxRes = max(maxRes, i - sta.top());
18             }
19         }
20         return maxRes;
21     }
22 };

这道题更详细的解答可以参考官方的solution,还有一种可以在O(1)空间复杂度完成的解法,有些难想,详情可以参考https://leetcode.com/problems/longest-valid-parentheses/solution/#

LeetCode 32. Longest Valid Parentheses

标签:tput   nta   substr   复杂   ali   位置   code   ref   add   

原文地址:https://www.cnblogs.com/dapeng-bupt/p/9863787.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!