算法leetcode每日一练1614. 括号的最大嵌套深度
Posted 二当家的白帽子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法leetcode每日一练1614. 括号的最大嵌套深度相关的知识,希望对你有一定的参考价值。
文章目录
- 1614. 括号的最大嵌套深度:
- 样例 1:
- 样例 2:
- 样例 3:
- 样例 4:
- 提示:
- 分析
- 题解
- 原题传送门:https://leetcode-cn.com/problems/maximum-nesting-depth-of-the-parentheses/
1614. 括号的最大嵌套深度:
如果字符串满足以下条件之一,则可以称之为 有效括号字符串(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
样例 3:
输入:
s = "1+(2*3)/(2-1)"
输出:
1
样例 4:
输入:
s = "1"
输出:
0
提示:
1 <= s.length <= 100
s
由数字0-9
和字符'+'
、'-'
、'*'
、'/'
、'('、')'
组成- 题目数据保证括号表达式
s
是 有效的括号表达式
分析
- 面对这道算法题目,二当家的陷入了沉思。
- 题目保证了括号表达式是有效的,所以我们只用考虑正常的括号表达式的深度如何统计。
- 经过分析,任何位置左括号比右括号多出来的数量,或者说还没有被右括号匹配掉的左括号数量便是深度。
题解
java
class Solution
public int maxDepth(String s)
int ans = 0;
int left = 0;
for (int i = 0; i < s.length(); ++i)
switch (s.charAt(i))
case '(':
ans = Math.max(ans, ++left);
break;
case ')':
--left;
break;
default:
// do-nothing
break;
return ans;
c
int maxDepth(char * s)
int ans = 0;
int left = 0;
while (*s)
switch (*s)
case '(':
ans = fmax(ans, ++left);
break;
case ')':
--left;
break;
default:
// do-nothing
break;
++s;
return ans;
c++
class Solution
public:
int maxDepth(string s)
int ans = 0;
int left = 0;
for (char c: s)
switch (c)
case '(':
ans = max(ans, ++left);
break;
case ')':
--left;
break;
default:
// do-nothing
break;
return ans;
;
python
class Solution:
def maxDepth(self, s: str) -> int:
ans, left = 0, 0
for c in s:
if c == '(':
left += 1
ans = max(ans, left)
elif c == ')':
left -= 1
return ans
go
func maxDepth(s string) (ans int)
left := 0
for _, c := range s
switch c
case '(':
left++
if left > ans
ans = left
case ')':
left--
return
rust
impl Solution
pub fn max_depth(s: String) -> i32
let mut ans = 0;
let mut left = 0;
s.as_bytes().iter().for_each(|&b|
match b as char
'(' =>
left += 1;
ans = ans.max(left);
,
')' =>
left -= 1;
,
_ =>
;
);
ans
原题传送门:https://leetcode-cn.com/problems/maximum-nesting-depth-of-the-parentheses/
非常感谢你阅读本文~
欢迎【👍点赞】【⭐收藏】【📝评论】~
放弃不难,但坚持一定很酷~
希望我们大家都能每天进步一点点~
本文由 二当家的白帽子:https://le-yi.blog.csdn.net/ 博客原创~
以上是关于算法leetcode每日一练1614. 括号的最大嵌套深度的主要内容,如果未能解决你的问题,请参考以下文章
算法leetcode每日一练1725. 可以形成最大正方形的矩形数目
算法leetcode每日一练2044. 统计按位或能得到最大值的子集数目