难度:中等
题目描述:
思路总结:最近这几道加减乘除括号题搞的我是晕头转向,不知所云。等做完这几天的题,需要好好总结一下。
题解一:
class Solution:
def calculate(self, s: str) -> int:
#思路:先算乘除,后算加减
stack = []
pre = 0
i = 0
while i < len(s):
if s[i].isdigit():
tmp = int(s[i])
i += 1
while i < len(s) and s[i].isdigit():
tmp = tmp * 10 + int(s[i])
i += 1
stack.append(tmp)
if len(stack)>1 and stack[-2] in ['*', '/']: #每次插入数的时候判断
num2,op, num1 = stack.pop(), stack.pop(), stack.pop()
if op == "*":
stack.append(num1*num2)
else:
stack.append(num1//num2)
elif s[i] != ' ':
stack.append(s[i])
i += 1
else:
i += 1
res = 0
sgn = 1
for t in stack:
if t == '+':
sgn = 1
elif t == '-':
sgn = -1
else:
res += int(t)*sgn
return res
题解一结果: