0
点赞
收藏
分享

微信扫一扫

leetcode每日一题1614. 括号的最大嵌套深度 昨日之栈 今日之用

本文目录

写在前面

啦啦啦,啦啦啦,我是写程序的小行家~今天我又来打卡了哦,因为这两天又对加深了Spring整体一站式框架的学习,所以每到半夜都睡不着,这不巧了,跟着就起来刷题了,不过定睛一看,今天的简单题确实格外的熟悉,和昨日之题有异曲同工之处,这就多劳力扣费心了qwq,话不多说咱们来干今天的题吧。

题目

示例

示例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 是 有效的括号表达式

思路

昨日之栈,今日之用,大家既然昨天刷到了那道题,那么今天这道题利用栈的思想很快也能做答。

  • 维护一个栈,当出现 '(' 时就将其入栈,当出现 ')'时就出栈,并记录此时的最大深度。

代码实现

class Solution {
    public int maxDepth(String s) {
    	//维护栈
        Stack<Character> stack = new Stack<>();
        //记录最大深度
        int res = 0;
        int n = s.length();
        for (int i = 0 ; i< n;i++){
            if (s.charAt(i) == '('){
                stack.push(s.charAt(i));
            }
            if (s.charAt(i) == ')'){
                stack.pop();
            }
            //比较深度,获得最大深度
            res = Math.max(stack.size() ,res);
        }
        return res;
    }
}

执行结果

在这里插入图片描述

代码优化

这里咱么可以不用到栈,用到栈的思想,每次遇到左括号就+1,遇到右括号就抵消,取得最大深度

class Solution {
    public int maxDepth(String s) {
        int depth=0;
        int res=0;
        for(int i=0;i<s.length();i++){
            if(s.charAt(i)=='(')
                depth++;
            if(s.charAt(i)==')')
                depth--;
            res=Math.max(res,depth);
        }
        return res;
    }
}

在这里插入图片描述

写在后面

2022-01-07小付坚持打卡了哦~

睡觉睡觉,毕竟小命要紧~

合理利用栈的数据结构

以及思想能够解决不少开发中的问题哦

最后

每天进步点 每天收获点

愿诸君 事业有成 学有所获

如果觉得不错 别忘啦一键三连哦~

举报

相关推荐

0 条评论