关闭

LeetCode:Longest Valid Parentheses

标签: LeetCodeLongest Valid Parent
2780人阅读 评论(1) 收藏 举报
分类:

Longest Valid Parentheses




Total Accepted: 63715 Total Submissions: 282480 Difficulty: Hard

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

For "(()", the longest valid parentheses substring is "()", which has length = 2.

Another example is ")()())", where the longest valid parentheses substring is "()()", which has length = 4.

Subscribe to see which companies asked this question

Hide Similar Problems
 (E) Valid Parentheses


















思路:

使用stack来保存未匹配的“括号”的下标,然后求下标之间的最大差值。


c++ code:

class Solution {
public:
    int longestValidParentheses(string s) {
        int n = s.length();
        stack<int> st;
        for (int i = 0; i < n; i++) {
            if (s[i] == '(') st.push(i);
            else {
                if (!st.empty()) {
                    if (s[st.top()] == '(') st.pop();
                    else st.push(i);
                }
                else st.push(i);
            }
        }
        
        int a = n, b = 0;
        int ans = 0;
        while(!st.empty()) {
            b = st.top();
            st.pop();
            ans = max(ans, a-b-1);
            a = b;
        }
        ans = max(ans, a);
        return ans;
    }
};


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:324730次
    • 积分:6131
    • 等级:
    • 排名:第4065名
    • 原创:310篇
    • 转载:1篇
    • 译文:0篇
    • 评论:22条
    博客专栏
    最新评论