224. Basic Calculator
class Solution {
public int calculate(String s) {
// levelResult used to store the sum in parentheses
int levelResult=0;
int num = 0;
// the sign of current num (number after the non-digit character)
int sign =1;
// stack to store the sum (levelResult) of different parentheses level
Deque<Integer> stack = new LinkedList<>();
for(char c : s.toCharArray()){
switch(c){
case '+':
levelResult +=sign*num;
sign=1;
num=0;
break;
case '-':
levelResult +=sign*num;
sign=-1;
num=0;
break;
case ' ':
break;
case '(':
stack.push(levelResult);
levelResult=0;
stack.push(sign);
sign=1;
break;
case ')':
levelResult +=num*sign;
levelResult = stack.pop()*levelResult+stack.pop();
num=0;
sign=1;
break;
default:
num=c-'0'+num*10;
}
}
return levelResult+num*sign;
}
}
Previous150. Evaluate Reverse Polish NotationNext331. Verify Preorder Serialization of a Binary Tree
Last updated
Was this helpful?