LeetCode 32. 最长有效括号

匿名 (未验证) 提交于 2019-12-02 23:48:02

输入: "(()"
输出: 2
解释: 最长有效括号子串为 "()"
示例 2:

输入: ")()())"
输出: 4
解释: 最长有效括号子串为 "()()"

算法:我们用两个变量分别记录左右括号的长度,先从左到右走一趟,当左括号小于右括号时归零,若中途两者相等,更新括号长度;然后再从右往左走一趟,规则与第一次相反。

class Solution { public:     int longestValidParentheses(string s) {         int l=0,r=0,res=0;         for(int i=0;i<s.size();i++){             if(s[i]=='(')l++;             else r++;             if(l==r)res=max(res,2*l);             else if(r>l)l=r=0;         }         l=r=0;         for(int i=s.size()-1;i>=0;i--){             if(s[i]=='(')l++;             else r++;             if(l==r)res=max(res,2*l);             else if(l>r)l=r=0;         }         return res;     } };

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!