返回
深入浅出:基本计算器 II — LeetCode 的挑战
前端
2023-12-20 10:16:17
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
扩展应用
这个计算器可以扩展到支持更多的运算符和函数,比如括号、三角函数、对数函数等。我们还可以将这个计算器用在其他应用中,比如财务计算器、科学计算器等。
总结
希望这篇文章对您有所帮助。如果您有更多的问题,欢迎随时提问。