给你一个字符串表达式 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; } }