给你一个字符串表达式s,请你实现一个基本计算器来计算并返回它的值。

整数除法仅保留整数部分。

示例 1:

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

示例 2:

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

示例 3:

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

提示:

  • 1 <= s.length <= 3*10^5
  • s由整数和算符('+', '-', '*', '/')组成,中间由一些空格隔开
  • s表示一个有效表达式
  • 表达式中的所有整数都是非负整数,且在范围[0, 2^31-1]
  • 题目数据保证答案是一个32位整数

1.队列
Python解答:

class Solution:
    def calculate(self, s: str) -> int:
        res = []
        num = s[0]
        i = 1
        while i < len(s):
            if s[i] == ' ':
                i += 1
                continue
            elif s[i].isdigit():
                num += s[i]
            else:
                res.append(int(num))
                res.append(s[i])
                num = ''
            i += 1
        else:
            res.append(int(num))
        first = []
        i = 0
        while i < len(res):
            if res[i] == '*':
                first[-1] *= res[i+1]
                i += 2
            elif res[i] == '/':
                first[-1] //= res[i+1]
                i += 2
            else:
                first.append(res[i])
                i += 1
        value = first[0]
        i = 1
        while i < len(first):
            if first[i] == '+':
                value += first[i+1]
                i += 2
            elif first[i] == '-':
                value -= first[i+1]
                i += 2
        return value
最后修改日期: 2021年9月1日

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。