carloscn / structstudy

Leetcode daily trainning by using C/C++/RUST programming.
4 stars 1 forks source link

leetcode1614:括号的最大嵌套深度(maximum-nesting-depth-of-the-parentheses) #254

Open carloscn opened 1 year ago

carloscn commented 1 year ago

问题描述

如果字符串满足以下条件之一,则可以称之为 有效括号字符串(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 是 有效的括号表达式

来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/maximum-nesting-depth-of-the-parentheses

carloscn commented 1 year ago

问题描述

pub fn max_depth(s: &str) -> i32
{
    let mut ret:i32 = 0;

    if s.is_empty() {
        return ret;
    }

    let mut t_vec:Vec<char> = vec![];
    let s_dup:Vec<char> = s.chars().collect();

    for e in s_dup {
        if e == '(' {
            t_vec.push(e);
            ret = ret.max(t_vec.len() as i32);
        } else if e == ')' {
            if !t_vec.is_empty() {
                t_vec.pop();
            } else {
                return 0;
            }
        }
    }

    return ret;
}
carloscn commented 1 year ago

code

https://review.gerrithub.io/c/carloscn/structstudy/+/555709 https://github.com/carloscn/structstudy/commit/4665ae1a6ad071f6fdfe1b4670d9862f1df44d30