题目来源
题目描述
题目解析
对于括号计算类题目,我们往往可以用栈来思考。
遍历字符串s
,如果遇到了一个(
,那么就将其入栈;如果遇到了一个)
,那么就弹出栈顶的(
,与该)
匹配。这一过程中的栈的大小的最大值,就是s
的嵌套深度。
由于我们只需要考虑栈的大小,我们可以用一个变量 size
表示栈的大小,当遇到左括号时就将其加一,遇到右括号时就将其减一,从而表示栈中元素的变化。这一过程中 size
的最大值即为 s 的嵌套深度。
class Solution {
public:
int maxDepth(string s) {
int cnt = 0, ans = cnt;
for (char ch : s) {
if(ch == '('){
++cnt;
}else if(ch == ')'){
ans = std::max(ans, cnt);
--cnt;
}
}
return ans;
}
};