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

32. Longest Valid Parentheses

时间:2019-03-09 12:53:23      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:获得   括号   art   出现   开始   位置   tps   ring   https   

https://www.cnblogs.com/grandyang/p/4424731.html

这个题求的是最长的连续匹配正确的符号

匹配错误只可能是右括号‘)‘存在时,堆中没有左括号‘(‘进行匹配

start用来继续这个连续匹配的开始位置,只有在匹配错误的情况下,这个start才更新

如果匹配成功后,堆中没有左括号‘(‘,则说明从start到当前都是匹配正确了的;

注意必须用i - position.top(),可能出现这种情况‘(()()‘,如果你使用i - position弹出的那个位置,你永远只可能获得长度为2的,不可能获得连续的长度

 

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

 

32. Longest Valid Parentheses

标签:获得   括号   art   出现   开始   位置   tps   ring   https   

原文地址:https://www.cnblogs.com/ymjyqsx/p/10500230.html

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