您的位置:首页 > 其它

LeetCode Basic Calculator 栈

2015-11-09 18:56 225 查看
思路:

注意的是,刚开始觉的既然只有加减法,且没有负数,那么括号去掉不就行了。。。

考虑下面的test case:

Input: "2-(5-6)"
Output: -9
Expected: 3


java code :

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