LeetCode 227. [Python] Basic Calculator II
原题链接
中等
作者:
徐辰潇
,
2021-05-22 22:22:09
,
所有人可见
,
阅读 239
class Solution:
def calculate(self, s: str) -> int:
#TC: O(len(s))
#SC: O(len(s))
res = 0
sign = '+'
num = 0
stack = []
for idx,c in enumerate(s):
if c.isdigit():
num = 10*num + int(c)
elif c == '+' or c == '-' or c == '*' or c == '/':
if sign == '+':
stack.append(num)
elif sign == '-':
stack.append(-num)
elif sign == '*':
prev = stack[-1]
stack.pop()
stack.append(prev*num)
elif sign == '/':
prev = stack[-1]
stack.pop()
stack.append(int(prev/num))
sign = c
num = 0
if sign == '+':
stack.append(num)
elif sign == '-':
stack.append(-num)
elif sign == '*':
prev = stack[-1]
stack.pop()
stack.append(prev*num)
elif sign == '/':
prev = stack[-1]
stack.pop()
stack.append(int(prev/num))
res = 0
for ele in stack:
res += ele
return res