这个题也是每次遇到符号的话计算前一次符号的计算 因为符号意味着这个num结束 所以每次sign要存起来 存成char 下次判断用
但是这个题是要把每个数字push进去 假如是乘除 算了这次再push 然后最后累加起来
其中注意最后一个位的时候也要做一遍是sign的 push最后一个数字进去
public class Solution {
public int calculate(String s) {
if ( s == null || s.length() == 0 )
return 0;
s = s.replaceAll("\\s","");
char sign = '+';
int num = 0;
int res = 0;
Stack <Integer> stack = new Stack<Integer>();
for ( int i = 0; i < s.length(); i ++ ) {
if ( Character.isDigit(s.charAt(i) )) {
num = 10 * num + s.charAt(i) -'0';
}
if ( !Character.isDigit(s.charAt(i) ) || i == s.length() - 1 ) {
if ( sign == '+' ){
stack.push(num);
}
else if ( sign == '-'){
stack.push(-num);
}
else if ( sign == '*'){
stack.push( stack.pop() * num );
}
else
stack.push( stack.pop() / num );
sign = s.charAt(i);
num = 0;
}
}
for ( int i : stack )
res += i;
return res;
}
}