当前位置:首页 > 生活 >

公文括号嵌套使用顺序(公文中套用圆括号的用法)

来源:原点资讯(www.yd166.com)时间:2024-05-07 11:11:23作者:YD166手机阅读>>

题目描述

如果字符串满足以下条件之一,则可以称之为 有效括号字符串(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 嵌套深度

示例 1:

输入:s = "(1 (2*3) ((8)/4)) 1" 输出:3 解释:数字 8 在嵌套的 3 层括号中。

示例 2:

输入:s = "(1) ((2)) (((3)))" 输出:3

提示:

  • 1 <= s.length <= 100
  • s 由数字 0-9 和字符 ' '、'-'、'*'、'/'、'('、')' 组成
  • 题目数据保证括号表达式 s 是 有效的括号表达式

解决方案

方法一:遍历

对于括号计算类题目,我们往往可以用栈来思考。

遍历字符串 s,如果遇到了一个左括号,那么就将其入栈;如果遇到了一个右括号,那么就弹出栈顶的左括号,与该右括号匹配。这一过程中的栈的大小的最大值,即为 s 的嵌套深度。

代码实现时,由于我们只需要考虑栈的大小,我们可以用一个变量 size 表示栈的大小,当遇到左括号时就将其加一,遇到右括号时就将其减一,从而表示栈中元素的变化。这一过程中 size 的最大值即为 s 的嵌套深度

代码

Python3

class Solution: def maxDepth(self, s: str) -> int: ans, size = 0, 0 for ch in s: if ch == '(': size = 1 ans = max(ans, size) elif ch == ')': size -= 1 return ans

C

class Solution { public: int maxDepth(string s) { int ans = 0, size = 0; for (char ch : s) { if (ch == '(') { size; ans = max(ans, size); } else if (ch == ')') { --size; } } return ans; } };

Java

class Solution { public int maxDepth(String s) { int ans = 0, size = 0; for (int i = 0; i < s.length(); i) { char ch = s.charAt(i); if (ch == '(') { size; ans = Math.max(ans, size); } else if (ch == ')') { --size; } } return ans; } }

Golang

func maxDepth(s string) (ans int) { size := 0 for _, ch := range s { if ch == '(' { size if size > ans { ans = size } } else if ch == ')' { size-- } } return }

C#

public class Solution { public int MaxDepth(string s) { int ans = 0, size = 0; foreach (char ch in s) { if (ch == '(') { size; ans = Math.Max(ans, size); } else if (ch == ')') { --size; } } return ans; } }

C

#define MAX(a, b) ((a) > (b) ? (a) : (b)) int maxDepth(char * s){ int ans = 0, size = 0; int n = strlen(s); for (int i = 0; i < n; i) { if (s[i] == '(') { size; ans = MAX(ans, size); } else if (s[i] == ')') { --size; } } return ans; }

JavaScript

var maxDepth = function(s) { let ans = 0, size = 0; for (let i = 0; i < s.length; i) { const ch = s[i]; if (ch === '(') { size; ans = Math.max(ans, size); } else if (ch === ')') { --size; } } return ans; };

复杂度分析

  • 时间复杂度:O(n),其中 n 是字符串 s 的长度。
  • 空间复杂度:O(1),我们只需要常数空间来存放若干变量。

BY /

本文作者:力扣

,

栏目热文

最美逆行者诗歌朗诵简短(最美逆行者朗诵诗歌视频)

最美逆行者诗歌朗诵简短(最美逆行者朗诵诗歌视频)

由吉林省作家协会和吉林新闻综合广播联合制作,立足吉林,面向全国,讴歌伟大,心忧天下。作者:王书艳 朗诵:芳凝 制作:韩骁...

2024-05-07 10:53:13查看全文 >>

2022年最美逆行者的诗歌(描写最美逆行者的诗歌)

2022年最美逆行者的诗歌(描写最美逆行者的诗歌)

面对突如其来的新冠疫情,举国上下,同心战“疫”。巴川量子学校特别开设战“疫”课堂,既彰显了时代特色,又融入了学科特点;既...

2024-05-07 10:32:19查看全文 >>

2022最美逆行者文案(最美逆行者朋友圈文案)

2022最美逆行者文案(最美逆行者朋友圈文案)

在这场突如其来的战“疫”⾯前,⼀群“最美逆⾏者”没有退缩,逆“风”⽽⾏,迎难⽽上,为抗击疫情,奉献⼒量,传递温暖。我们在...

2024-05-07 10:27:32查看全文 >>

如何给无线网卡安装驱动(安装无线网卡驱动的操作步骤)

如何给无线网卡安装驱动(安装无线网卡驱动的操作步骤)

无线网卡是一种可以让电脑或其他设备通过无线信号连接网络的硬件设备,无线网卡有多种类型和接口,例如USB无线网卡,PCI-...

2024-05-07 10:46:29查看全文 >>

北京故宫作文(故宫简介500字左右五年级)

北京故宫作文(故宫简介500字左右五年级)

  中国的世界文化遗产北京故宫作文 1  一座城,一座神秘莫测的城,红墙高耸、角楼巍峨,百姓不能踏入半步的城。它的记忆,...

2024-05-07 10:25:29查看全文 >>

括号怎么写才正确(括号的书写顺序)

括号怎么写才正确(括号的书写顺序)

括号的用法有哪些?在日常行文中,括号的主要分为4种。掌握了这4种用法,括号的基础用法也就掌握了。写在前面括号是行文中常用...

2024-05-07 10:41:05查看全文 >>

括号怎么在手机上打出来(括号用手机怎么竖着打出来)

括号怎么在手机上打出来(括号用手机怎么竖着打出来)

1月14日微信和QQ都有新动作微信上线了多个新表情!微信可以向QQ转账了!(QQ暂时不能向微信转账)吃瓜、狗头等表情微信...

2024-05-07 10:32:20查看全文 >>

电脑上中括号怎么打(电脑上大括号怎么打)

电脑上中括号怎么打(电脑上大括号怎么打)

今天结合键盘的实物图,给大家讲解一下键盘上各个按键的功能及作用,还有就是各个按键的意义。大神可以绕道,非大神如果觉得此文...

2024-05-07 10:32:58查看全文 >>

手机括号怎么打出来(大括号怎么打出来手机)

手机括号怎么打出来(大括号怎么打出来手机)

华为手机华为手机,关了wifi上网,开飞行模式,插网线上网出来的符号。,...

2024-05-07 10:47:22查看全文 >>

word半括号怎么打(word单括号怎么打出来)

word半括号怎么打(word单括号怎么打出来)

在日常工作中,我们偶尔会遇到需要处理上标和下标的情况。你是用鼠标一次次的点击选择,还是用快捷键来提高我们的工作效率呢?我...

2024-05-07 10:49:45查看全文 >>

文档排行