Neo's Blog

不抽象就无法深入思考
不还原就看不到本来面目!

0%

最大括号长度

给出一个长度为 n 的,仅包含字符 ‘(‘ 和 ‘)’ 的字符串,计算最长的格式正确的括号子串的长度。

例1: 对于字符串 “(()” 来说,最长的格式正确的子串是 “()” ,长度为 2 .
例2:对于字符串 “)()())” , 来说, 最长的格式正确的子串是 “()()” ,长度为 4 .

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Solution {
public:
int longestValidParentheses(string str) {
stack<int> s;
s.push(-1);
int res = 0;

for (int i = 0; i < str.length(); ++i) {
if (str[i] == '(') {
s.push(i);
} else { //')'
s.pop();
if (s.empty()) { //新的开始, 不匹配的“)”
s.push(i);
} else {
res = max(res, i - s.top());
}
}
}

return res;
}
};
你的支持是我坚持的最大动力!