本文目录
写在前面
啦啦啦,啦啦啦,我是写程序的小行家~今天我又来打卡了哦,因为这两天又对加深了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小付坚持打卡了哦~
睡觉睡觉,毕竟小命要紧~
合理利用栈的数据结构
以及思想能够解决不少开发中的问题哦
最后
每天进步点 每天收获点
愿诸君 事业有成 学有所获
如果觉得不错 别忘啦一键三连哦~