Toasobi
基本运算器(中等)
本文最后更新于2023年03月27日,已超过651天没有更新。如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!
基本解法,运用栈进行数据存储,设定先前符号为+,之后遍历s入栈操作
<div>
class Solution {
public int calculate(String s) {
Deque<Integer> stack = new ArrayDeque<Integer>();
char preSign = '+';
int num = 0;
for(int i=0;i<s.length();i++){
if(Character.isDigit(s.charAt(i))){
num = num * 10 + s.charAt(i) - '0'; //是否是多位
}
if(!Character.isDigit(s.charAt(i)) && s.charAt(i) != ' ' || i == s.length()-1){
switch(preSign){
case'+':
stack.push(num);
break;
case'-':
stack.push(-num);
break;
case'*':
stack.push(stack.pop() * num);
break;
case'/':
stack.push(stack.pop()/num);
break;
}
preSign = s.charAt(i);
num = 0;
}
}
while(!stack.isEmpty()){
num += stack.pop();
}
return num;
}
}
</div>