首页 > 试题广场 >

括号匹配深度

[编程题]括号匹配深度
  • 热度指数:2465 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
一个合法的括号匹配序列有以下定义:
1、空串""是一个合法的括号匹配序列
2、如果"X"和"Y"都是合法的括号匹配序列,"XY"也是一个合法的括号匹配序列
3、如果"X"是一个合法的括号匹配序列,那么"(X)"也是一个合法的括号匹配序列
4、每个合法的括号序列都可以由以上规则生成。
例如: "","()","()()","((()))"都是合法的括号序列
对于一个合法的括号序列我们又有以下定义它的深度:
1、空串""的深度是0
2、如果字符串"X"的深度是x,字符串"Y"的深度是y,那么字符串"XY"的深度为max(x,y) 3、如果"X"的深度是x,那么字符串"(X)"的深度是x+1
例如: "()()()"的深度是1,"((()))"的深度是3。牛牛现在给你一个合法的括号序列,需要你计算出其深度。

输入描述:
输入包括一个合法的括号序列s,s长度length(2 ≤ length ≤ 50),序列中只包含'('和')'。


输出描述:
输出一个正整数,即这个序列的深度。
示例1

输入

(())

输出

2
头像 c++小白鼠
发表于 2022-08-17 21:54:25
#include<iostream> using namespace std; #include<stack> int fenzhi(string s,int left,int right) {  &nbs 展开全文
头像 PenGuin!
发表于 2022-08-08 18:36:57
以栈的思维思考,在输入合法的情况下,每次‘(’入栈,就代表深度加一,每次‘)’入栈,就会与‘(’消除(即一个‘(’的出栈),而消除发生时,深度就会减一。 回到代码中,因为输入只有'('与')'与空的情况,而‘)’只会与‘(’进行消除,所以我们只需要一个变量记录当前深度即可 class&nb 展开全文
头像 知有牛
发表于 2022-06-23 20:41:32
a = input() alist = [] i = 0 for b in a:     if b == '(':         i += 1     else:         展开全文
头像 见面说Hello
发表于 2022-05-05 16:03:08
遇到‘(’深度加1, ‘)’输出深度并减1, 查询list中最大深度即为当前深度 import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class Main { public stati 展开全文
头像 牛客393558216号
发表于 2022-04-20 11:33:38
var str = readline() var list = str.split("") var left = 0 var depth = 0 for(var i = 0;i<list.length;i++){     if(list[i]=="("){   & 展开全文
头像 一只菜弱鸡
发表于 2022-04-18 22:54:26
遇到'(' n+1,遇到')'n-1,出现过最大的n就是所求深度了 #include <iostream> #include <string> using namespace std; int main () { string str; cin>>str 展开全文
头像 爱刷美剧的小刺猬
发表于 2021-10-11 11:06:52
利用栈先入先出的特点 这里不用判断字符串是否合法,减少了许多麻烦 遇到"("就加入res 如果遇")"就弹出,res.pop(),并且将当前深度纳入all_depth def getDepth(line): if not line: return 0 res=line 展开全文
头像 高上
发表于 2022-09-07 16:02:43
代码如下: #include<bits/stdc++.h> using namespace std; int getDepth(string s){     int leftNum=0;//做左 展开全文
头像 牛客469046824号
发表于 2023-02-01 11:32:54
s = input() l = 0 #左括号数量 r = 0 #右括号数量 m = 0 #最大深度 for i in s: if i == '(': l = (l-r+1) r = 0 else: if l > m: 展开全文
头像 牛客101503448号
发表于 2022-03-26 13:40:21
<?php //输入字符串 $s= trim(fgets(STDIN)); //深度 $depth = 0; $left = 0; //for循环匹配,找出最大深度 for($i=0;$i<strlen($s);$i++){ if($s[$i]=='(') 展开全文