括号的最大嵌套深度(C语言)

简介: 括号的最大嵌套深度(C语言)

题目:括号的最大嵌套深度


如果字符串满足以下条件之一,则可以称之为 有效括号字符串(valid parentheses string,可以简写为 VPS):


字符串是一个空字符串 "",或者是一个不为 "(" 或 ")" 的单字符。

字符串可以写为 AB(A 与 B 字符串连接),其中 A 和 B 都是 有效括号字符串 。

字符串可以写为 (A),其中 A 是一个 有效括号字符串 。

类似地,可以定义任何有效括号字符串 S 的 嵌套深度 depth(S):


depth("") = 0

depth(C) = 0,其中 C 是单个字符的字符串,且该字符不是 "(" 或者 ")"

depth(A + B) = max(depth(A), depth(B)),其中 A 和 B 都是 有效括号字符串

depth("(" + A + ")") = 1 + depth(A),其中 A 是一个 有效括号字符串


例如:""、"()()"、"()(()())" 都是 有效括号字符串(嵌套深度分别为 0、1、2),而 ")(" 、"(()" 都不是 有效括号字符串 。

给你一个 有效括号字符串 s,返回该字符串的 s 嵌套深度 。


思路:利用栈记录栈顶历史最大值,即就是字符串的括号嵌套最大深度

代码参考:

int maxDepth(char * s){
   int len = strlen(s);
//申请栈空间,利用数组模拟栈结构
char *stack = (char*)malloc(len+1);
int top =0;
int maxDepth =0;
for(int i=0;i<len;i++)
{
    if(s[i]=='(')
    {
        stack[top++] =s[i];
        maxDepth = maxDepth >top?maxDepth:top;
    }
    else if(s[i] == ')')
    top --;
}
free(stack);
return maxDepth;
}


相关文章
|
7月前
|
C语言
C语言函数的嵌套调用详解
C语言函数的嵌套调用详解
177 1
|
7月前
|
存储 程序员 C语言
C语言中的嵌套语句与Switch语句的深入解析
C语言中的嵌套语句与Switch语句的深入解析
93 1
|
7月前
|
C语言
C语言函数嵌套与递归调用的深入解析
C语言函数嵌套与递归调用的深入解析
86 0
|
7月前
|
机器学习/深度学习 算法 编译器
【C语言】函数 ---- 函数的嵌套调用和链式访问、函数的声明和定义、变量的声明和定义、函数递归与迭代、递归时的栈溢出问题
【C语言】函数 ---- 函数的嵌套调用和链式访问、函数的声明和定义、变量的声明和定义、函数递归与迭代、递归时的栈溢出问题
131 0
|
程序员 编译器 C语言
【C语言】——函数的嵌套调用和链式访问
【C语言】——函数的嵌套调用和链式访问
【C语言】——函数的嵌套调用和链式访问
|
7月前
|
C语言
C语言的if语句的嵌套
C语言的if语句的嵌套
107 2
|
7月前
|
Java 测试技术 C语言
C语言选择结构嵌套
C语言选择结构嵌套
67 1
|
7月前
|
C语言
在C语言中如何使用嵌套
在C语言中如何使用嵌套
167 0
C4.
|
7月前
|
Serverless C语言
C语言函数的嵌套调用
C语言函数的嵌套调用
C4.
188 0
|
C语言
C语言---函数知识点总结---函数的调用,嵌套调用和链式访问
C语言---函数知识点总结---函数的调用,嵌套调用和链式访问