题目:
基本计算器 II:实现一个基本的计算器来计算一个简单的字符串表达式的值。 字符串表达式仅包含非负整数,+, - ,*,/ 四种运算符和空格 。 整数除法仅保留整数部分。
说明:
- 你可以假设所给定的表达式都是有效的。
- 请不要使用内置的库函数
eval
。
思路:
使用栈来实现,之前在做课设时候做过,因为不考虑括号和小数点的问题,比较简单。
程序:
class Solution:
def calculate(self, s: str) -> int:
if not s:
return 0
length = len(s)
if length == 1:
return int(s)
myStack = []
data = 0
sign = '+'
for index in range(len(s)):
if s[index].isdigit():
data = data * 10 + int(s[index])
if s[index] in '+-*/' or index == length - 1:
if sign == '+':
myStack.append(data)
elif sign == '-':
myStack.append(-data)
elif sign == '*':
myStack.append(myStack.pop() * data)
else:
data_before = myStack.pop()
if data_before > 0:
myStack.append(data_before//data)
elif data_before < 0:
myStack.append(-(abs(data_before)//data))
else:
myStack.append(0)
sign = s[index]
data = 0
return sum(myStack)