解题思路
这道题的意思就是计算带括号的加减运算,做法是使用栈来进行运算。遇到左括号"("和数字就入栈,减号后面如果是数字的话就将该数字设为负数,如果负号后面是括号就继续入栈,遇到右括号出栈。
提交代码
class Solution {
public int calculate(String s) {
int res=0,p=0,flag=1,num=0;
Stack<String> stack=new Stack<String>();
while(p<s.length()) {
if(s.charAt(p)=='(')
stack.push("(");
else if(s.charAt(p)=='+')
flag=1;
else if(s.charAt(p)=='-') {
if(s.charAt(p+1)=='(')
stack.push("-");
else
flag=-1;
}
else if(s.charAt(p)>='0'&&s.charAt(p)<='9') {
num=s.charAt(p)-'0';
while(p+1<s.length()&&s.charAt(p+1)>='0'&&s.charAt(p+1)<='9') {
p++;
num*=10;
num+=s.charAt(p)-'0';
}
stack.push(flag*num+"");
flag=1;
}
else if(s.charAt(p)==')'){
res=0;
while(!stack.empty()&&stack.peek()!="(")
res+=Integer.parseInt(stack.pop());
stack.pop();
if(!stack.isEmpty()&&stack.peek()=="-") {
res*=-1;
stack.pop();
}
stack.push(res+"");
}
p++;
}
res=0;
while(!stack.isEmpty())
res+=Integer.parseInt(stack.pop());
return res;
}
}
运行结果

本文介绍了一种使用栈数据结构解决包含括号的加减运算问题的方法。通过解析输入字符串,利用栈暂存数字和操作符,处理括号内的计算,并最终得出结果。

被折叠的 条评论
为什么被折叠?



