227. Basic Calculator II
Implement a basic calculator to evaluate a simple expression string.
The expression string contains only non-negative integers, +, -, *, / operators and empty spaces . The integer division should truncate toward zero.
采用堆栈的方法,学习到Character的方法:
class Solution {
public int calculate(String s) {
int res = 0, num1, num2,sign=1;
if (s.length() == 0)
return res;
Stack<Integer> number = new Stack<Integer>();
char[] c = s.trim().toCharArray();
for (int i = 0; i < c.length; i++) {
while (Character.isWhitespace(c[i]))
i++;// 去除空白
if (c[i] == '*') {
num1 = number.pop();
i++;
while (Character.isWhitespace(c[i]))
i++;// 去除空白
num2 = Character.digit(c[i], 10);
while (i != c.length - 1 && Character.isDigit(c[i + 1])) {
i++;
num2 = num2 * 10 +Character.digit(c[i], 10);
}
number.push(num1 * num2);
} else if (c[i] == '/') {
num1 = number.pop();
i++;
while (Character.isWhitespace(c[i]))
i++;// 去除空白
num2 = Character.digit(c[i], 10);
while (i != c.length - 1 && Character.isDigit(c[i + 1])) {
i++;
num2 = num2 * 10 + Character.digit(c[i], 10);
}
number.push(num1 / num2);
} else if (c[i] == '-') {
sign=-1;
} else if(Character.isDigit(c[i])){
int num = Character.digit(c[i], 10);
while (i != c.length - 1 && Character.isDigit(c[i + 1])) {
i++;
num = num * 10 + Character.digit(c[i], 10);
}
number.push(sign*num);
sign=1;
}
}
while (!number.isEmpty()) {
res+=number.pop();
}
return res;
}
}