返回

深入浅出:基本计算器 II — LeetCode 的挑战

前端

LeetCode 基本计算器 II

在 LeetCode 的基本计算器 II 题目中,您需要实现一个基本计算器来计算并返回表达式的值。这个计算器需要支持加(+)、减(-)、乘(*)和除(/)这四种基本算术运算,并且整数除法仅保留整数部分。

思路

这道题与计算器 I 类似,但多了乘法和除法运算。因此,我们需要先对表达式进行拆分,提取出操作数和运算符。然后,我们可以根据运算符的优先级,将表达式分成多个子表达式。最后,我们可以递归地计算每个子表达式的值,并返回最终结果。

代码示例

def calculate(s):
  """
  计算表达式的值。

  Args:
    s: 表达式字符串。

  Returns:
    表达式的值。
  """

  # 拆分表达式
  tokens = []
  i = 0
  while i < len(s):
    if s[i] in "+-*/":
      tokens.append(s[i])
      i += 1
    else:
      number = ""
      while i < len(s) and s[i].isdigit():
        number += s[i]
        i += 1
      tokens.append(int(number))

  # 计算表达式的值
  result = 0
  operator = "+"
  i = 0
  while i < len(tokens):
    if tokens[i] in "+-":
      operator = tokens[i]
      i += 1
    elif tokens[i] in "*/":
      if operator == "+":
        result += tokens[i-1]
      elif operator == "-":
        result -= tokens[i-1]
      elif operator == "*":
        result *= tokens[i-1]
      elif operator == "/":
        result //= tokens[i-1]
      operator = tokens[i]
      i += 1
    else:
      if operator == "+":
        result += tokens[i]
      elif operator == "-":
        result -= tokens[i]
      elif operator == "*":
        result *= tokens[i]
      elif operator == "/":
        result //= tokens[i]
      i += 1

  return result

扩展应用

这个计算器可以扩展到支持更多的运算符和函数,比如括号、三角函数、对数函数等。我们还可以将这个计算器用在其他应用中,比如财务计算器、科学计算器等。

总结

希望这篇文章对您有所帮助。如果您有更多的问题,欢迎随时提问。