LeetCode Basic Calculator 栈

来源:互联网 发布:淘宝联盟是干什么的 编辑:程序博客网 时间:2024/06/05 12:44

思路:

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

Input: "2-(5-6)"Output: -9Expected: 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;    }}
0 0
原创粉丝点击