标签:获得 括号 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; } };
标签:获得 括号 art 出现 开始 位置 tps ring https
原文地址:https://www.cnblogs.com/ymjyqsx/p/10500230.html