# # 【LeetCode】227. Basic Calculator II 解题报告（Python）

## # 题目描述：

Implement a basic calculator to evaluate a simple expression string.

The expression string contains only non-negative integers, +, -, *, / operators and empty spaces . The integer division should truncate toward zero.

Example 1:

``````Input: "3+2*2"
Output: 7
``````

Example 2:

``````Input: " 3/2 "
Output: 1
``````

Example 3:

``````Input: " 3+5 / 2 "
Output: 5
``````

Note:

• You may assume that the given expression is always valid.
• Do not use the eval built-in library function.

## # 解题方法

``````class Solution:
def calculate(self, s):
"""
:type s: str
:rtype: int
"""
stack = []
pre_op = '+'
num = 0
for i, each in enumerate(s):
if each.isdigit():
num = 10 * num + int(each)
if i == len(s) - 1 or each in '+-*/':
if pre_op == '+':
stack.append(num)
elif pre_op == '-':
stack.append(-num)
elif pre_op == '*':
stack.append(stack.pop() * num)
elif pre_op == '/':
top = stack.pop()
if top < 0:
stack.append(int(top / num))
else:
stack.append(top // num)
pre_op = each
num = 0
return sum(stack)

``````

## # 日期

2018 年 6 月 27 日 ———— 阳光明媚，心情大好，抓紧科研啊