Solution URL
https://leetcode.com/submissions/detail/413190050/
代码
class Solution {
public int calculate(String s) {
//ans: https://www.youtube.com/watch?v=GpLJMW1IGbw
Stack<Integer> stack = new Stack<>();
int number = 0;
int sign = 1;
int subsum = 0;
int i = 0;
while( i < s.length()){
char c = s.charAt(i);
if(Character.isDigit(c)){
//得到数字
number = 10 * number + (c - '0');
} else if(c == '+'){
subsum += number * sign;
//还原符号
sign = 1;
number = 0;
} else if( c == '-'){
subsum += number * sign;
sign = -1;
number = 0;
} else if( c == '('){
stack.push(subsum);
subsum = 0;
number = 0;
stack.push(sign);
sign = 1;
} else if( c == ')'){
subsum += number * sign;
number = 0;
sign = 1;
subsum *= stack.pop();
subsum += stack.pop();
}
i++;
}
if(number != 0){
subsum += number * sign;
}
return subsum;
}
}