Basic Calculator

来源:互联网 发布:提拉紧致精华液 知乎 编辑:程序博客网 时间:2024/04/28 12:41

反复练习

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

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;    }}


0 0