给你一个字符串表达式 s
,请你实现一个基本计算器来计算并返回它的值。
整数除法仅保留整数部分。
输入:s = "3+2*2" 输出:7
输入:s = " 3/2 " 输出:1
class Solution {
public int calculate(String s) {
Stack<Integer> stack = new Stack<Integer>();
int num = 0;
char ch = '+';
//int res = 0;
int sum = 0;
int n = s.length();
for(int i = 0; i<n; i++){
if(Character.isDigit(s.charAt(i))){
num = num*10 + (s.charAt(i)-'0');
}
if(!Character.isDigit(s.charAt(i))&& s.charAt(i)!= ' '||i==n-1){
switch(ch){
case '+':
stack.push(num);
break;
case '-':
stack.push(-num);
break;
case '*':
stack.push(stack.pop()*num);
break;
case '/':
stack.push(stack.pop()/num);
break;
}
num = 0;
ch =s.charAt(i);
}
}
int m = stack.size();
for(int i = 0; i<m;i++){
sum += stack.pop();
}
return sum;
}
}