算法描述:
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"()()"
解题思路:用栈模拟,遇到左括号进栈,右括号出栈,并计算合法括号数量。
int longestValidParentheses(string s) { stack<int> stk; int res = 0; int i = 0; int start = -1; while(i < s.size()){ if(s[i]=='('){ stk.push(i); }else{ if(stk.empty()) start = i; else{ stk.pop(); if(stk.empty()) res = max(res, i- start); else res = max(res, i-stk.top()); } } i++; } return res; }