⭐️ 题目描述
🌟leetcode链接:括号的最大嵌套深度
ps:
使用数据结构栈来存储 (
在使用 maxDepth
变量记录栈顶 top
的最大值,当遇到 )
时删除栈顶元素。举个例子 (1)+((2))+(((3)))
,当遇到第一个 (
时 top = 1
,maxDepth = 1
代表嵌套深度最大为 1
,遇到 1
的右括号时出栈 top = 0
,在接着遇到 ((
top = 2
,这时嵌套深度说明是 2
,所以 maxDepth
取的是 top
与 maxDepth
的较大值。以此类推……
代码:
int maxDepth(char * s){
int size = strlen(s);
char * stack = (char*)malloc(sizeof(char) * size + 1); // 模拟栈
int top = 0;
int maxDepth = 0;
for (int i = 0; i < size; i++) {
if (s[i] == '(') {
// 入栈
stack[top++] = s[i];
// 取当前栈的高度
maxDepth = maxDepth > top ? maxDepth : top;
} else if (s[i] == ')') {
// 删除栈顶元素
top--;
}
}
free(stack);
return maxDepth;
}