LeetCode 227. 基本计算器 II(Basic Calculator II)

Posted hglibin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 227. 基本计算器 II(Basic Calculator II)相关的知识,希望对你有一定的参考价值。

227. 基本计算器 II
227. Basic Calculator II

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

字符串表达式仅包含非负整数,+,-,*,/ 四种运算符和空格。整数除法仅保留整数部分。

LeetCode227. Basic Calculator II中等

示例?1:

输入: "3+2*2"
输出: 7

示例 2:

输入: " 3/2 "
输出: 1

示例 3:

输入: " 3+5 / 2 "
输出: 5

说明:

  • 你可以假设所给定的表达式都是有效的。
  • 请不要使用内置的库函数 eval。

Java 实现

import java.util.Stack;

class Solution 
    public int calculate(String s) 
        int len;
        if (s == null || (len = s.length()) == 0) 
            return 0;
        
        int num = 0;
        char sign = '+';
        Stack<Integer> stack = new Stack<>();
        for (int i = 0; i < len; i++) 
            if (Character.isDigit(s.charAt(i))) 
                num = num * 10 + s.charAt(i) - '0';
            
            if (!Character.isDigit(s.charAt(i)) && ' ' != s.charAt(i) || i == len - 1) 
                if (sign == '+') 
                    stack.push(num);
                
                if (sign == '-') 
                    stack.push(-num);
                
                if (sign == '*') 
                    stack.push(stack.pop() * num);
                
                if (sign == '/') 
                    stack.push(stack.pop() / num);
                
                sign = s.charAt(i);
                num = 0;
            
        
        int res = 0;
        for (int x : stack) 
            res += x;
        
        return res;
    

相似题目

参考资料

以上是关于LeetCode 227. 基本计算器 II(Basic Calculator II)的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 227. 基本计算器 II

Leetcode 227.基本计算器II

LeetCode227:基本计算器II

LeetCode 227. 基本计算器 II

LeetCode 227. 基本计算器 II c++/java详细题解

227. 基本计算器 II