美文网首页
2021.3.10每日一题

2021.3.10每日一题

作者: Yaan9 | 来源:发表于2021-03-10 09:16 被阅读0次

    224. 基本计算器

    实现一个基本的计算器来计算一个简单的字符串表达式 s 的值。

    示例 1:

    输入:s = "1 + 1"
    输出:2
    

    示例 2:

    输入:s = " 2-1 + 2 "
    输出:3
    

    示例 3:

    输入:s = "(1+(4+5+2)-3)+(6+8)"
    输出:23
    

    题解

        public int calculate(String s) {
            Stack<Integer> stack = new Stack<Integer>();
            int sign = 1, res = 0;
            int length = s.length();
            for (int i = 0; i < length; i++) {
                char ch = s.charAt(i);
                if (Character.isDigit(ch)) {
                    int cur = ch - '0';
                    while (i + 1 < length && Character.isDigit(s.charAt(i + 1))) {
                        cur = cur * 10 + s.charAt(++i) - '0';
                    }
                    res = res + sign * cur;
                } else if (ch == '+') {
                    sign = 1;
                } else if (ch == '-') {
                    sign = -1;
                } else if (ch == '(') {
                    stack.push(res);
                    res = 0;
                    stack.push(sign);
                    sign = 1;
                } else if (ch == ')') {
                    res = stack.pop() * res + stack.pop();
                }
            }
            return res;
        }
    

    相关文章

      网友评论

          本文标题:2021.3.10每日一题

          本文链接:https://www.haomeiwen.com/subject/shaiqltx.html