您的位置:首页 > 其它

Basic Calculator

2015-07-09 15:24 211 查看
反复练习

由于没有乘法和除法。只要记录每个数前的正负号,顺序相加即可。

public class Solution {
public int calculate(String s) {
//s.replaceAll(" ","");
if (s == null || s.length() == 0) {
return -1;
}
Stack<Integer> sign = new Stack<Integer>();
sign.push(1);
int lastOp = 1;
int result = 0;
for (int i = 0; i < s.length(); i++) {
switch (s.charAt(i)) {
case ' ' :
break;
case '+' :
lastOp = 1;
break;
case '-' :
lastOp = -1;
break;
case '(' :
sign.push(lastOp * sign.peek());
lastOp = 1;
break;
case ')' :
sign.pop();
break;
default:
int num = 0;
while (i < s.length() && Character.isDigit(s.charAt(i))) {
num = num * 10 + s.charAt(i) - '0';
i++;
}
result = result + sign.peek() * lastOp * num;
i--;
}
}
return result;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Stack Math