題目:
基本計算器 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)