192 - 224 基本计算器
题目
实现一个基本的计算器来计算一个简单的字符串表达式的值。
字符串表达式可以包含左括号 ( ,右括号 ),加号 + ,减号 -,非负整数和空格 。
示例 1:
输入: "1 + 1" 输出: 2
示例 2:
输入: " 2-1 + 2 " 输出: 3
示例 3:
输入: "(1+(4+5+2)-3)+(6+8)" 输出: 23
说明:
你可以假设所给定的表达式都是有效的。
请不要使用内置的库函数 eval。
解答
和2相比,没了乘除,只有加减和括号
https://leetcode.com/problems/basic-calculator/discuss/62361/Iterative-Java-solution-with-stack
class Solution:
def calculate(self, s: str) -> int:
stack, number, result, sign = [], 0, 0, 1
for c in s:
if c.isdigit():
number = (number * 10) + int(c)
elif c in ["-", "+"]:
result += sign*number
number = 0
sign = 1 if c == "+" else -1
elif c == "(":
stack.append(result)
stack.append(sign)
result = 0
sign = 1
elif c == ")":
result += sign*number
number = 0
result *= stack.pop()
result += stack.pop()
if number != 0:
result += sign*number
return result
Runtime: 72 ms, faster than 89.53% of Python3 online submissions for Basic Calculator.
Memory Usage: 14 MB, less than 7.14% of Python3 online submissions for Basic Calculator.
Last updated
Was this helpful?