227. Basic Calculator II (M)
Last updated
Last updated
class Solution {
public int calculate(String s) {
Stack<Integer> stack = new Stack<Integer>();
char prevSign = '+';
int num = 0;
for(int i = 0; i< s.length(); i++)
{
char current = s.charAt(i);
if(Character.isDigit(current))
{
num = num*10 + (current- '0');
}
if((!Character.isDigit(current) && current != ' ' ) || i == s.length()-1)
{
int prev;
switch(prevSign)
{
case '+':
stack.push(num); break;
case '-':
stack.push(-num); break;
case '*':
prev = stack.pop();
stack.push(prev* num);
break;
case '/':
prev = stack.pop();
stack.push(prev/num);
break;
}
prevSign = current;
num = 0;
}
}
int result = 0;
while(!stack.isEmpty())
{
result += stack.pop();
}
return result;
}
}