Longest Valid Parentheses

原创 2015年07月08日 10:03:21

思路:

方法一:栈操作。时间复杂度O(N),空间复杂度O(1)。

last 为上次匹配失败的位置,初始值为 -1。
(1)遇见 '(' ,直接将位置入栈;
(2)遇见 ')'
=> 如果栈为空,即没有对应匹配的 '(' ,更新last;
=> 如果栈不为空,弹出一个元素匹配,若栈中还有元素,说明匹配还可能没完成,但可以试着更新ans;若栈中没元素了,说明暂时匹配成功,试着更新ans。

最后取ans得最大值。

class Solution {
public:
    int longestValidParentheses(string s) {
        if(s == "") return 0;
        stack<int> ss;
        int ans = 0, last = -1;
        for(int i = 0; i < s.size(); ++i) {
            if(s[i] == '(') {
                ss.push(i);
            }else {
                if(ss.empty()) {
                    last = i;
                }else {
                    ss.pop();
                    if(ss.empty()) {
                        ans = max(ans, i - last);
                    }else {
                        ans = max(ans, i - ss.top());
                    }
                }
            }
        }
        return ans;
    }
};

【LeetCode】Longest Valid Parentheses 解题报告

【题目】 Given a string containing just the characters '(' and ')', find the length of the longes...
  • ljiabin
  • ljiabin
  • 2015年04月06日 19:05
  • 1791

Longest Valid Parentheses,二维动态规划、一维动态规划、stack

一、二维动态规划 int longestValidParentheses(string s) {         int len=s.length(),maxLen=0;         bool v...
  • angelewings
  • angelewings
  • 2014年12月10日 10:31
  • 719

LeetCode --- 32. Longest Valid Parentheses

题目链接:Longest Valid Parentheses Given a string containing just the characters '(' and ')', find the ...
  • makuiyu
  • makuiyu
  • 2015年02月04日 23:16
  • 1552

LeetCode Longest Valid Parentheses 解题报告

分析,求出一串由:‘(’和‘)’组成的字符串中最长有效括号的长度。例如:(()(),结果是4。((()))结果是6。())()()结果是4。...
  • worldwindjp
  • worldwindjp
  • 2014年09月22日 00:24
  • 8914

LeetCode(32)Longest Valid Parentheses

题目如下: Given a string containing just the characters '(' and ')', find the length of the longest vali...
  • feliciafay
  • feliciafay
  • 2014年03月07日 08:31
  • 1752

Longest Valid Parentheses -- LeetCode

原题链接: http://oj.leetcode.com/problems/longest-valid-parentheses/  这道题是求最长的括号序列,比较容易想到用栈这个数据结构。基本思路就是...
  • linhuanmars
  • linhuanmars
  • 2014年03月04日 07:57
  • 11176

Leetcode 32 Longest Valid Parentheses DP好题

就喜欢做这种想法题, 一开始的想法和之前做过的一道括号匹配差不多,用栈。 记录未匹配的括号位置,然后两两相减找到最大值,过了,但速度并不快。 在discuss中看到有人用DP,恍然大悟! dp[i]表...
  • u012614906
  • u012614906
  • 2016年09月05日 13:43
  • 1328

[Leetcode]32. Longest Valid Parentheses @python

题目Given a string containing just the characters ‘(’ and ‘)’, find the length of the longest valid (w...
  • qian2729
  • qian2729
  • 2016年01月17日 11:30
  • 308

LeetCode 之 Longest Valid Parentheses(栈)

LeetCode 之 Valid Palindrome,本文给出详细算法思想与源码实现。
  • u013630349
  • u013630349
  • 2015年07月23日 10:07
  • 738

[leetcode-32]Longest Valid Parentheses(java)

问题描述: Given a string containing just the characters ‘(’ and ‘)’, find the length of the longest val...
  • zdavb
  • zdavb
  • 2015年09月01日 16:54
  • 558
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Longest Valid Parentheses
举报原因:
原因补充:

(最多只允许输入30个字)