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.
You may assume that the given expression is always valid.
Some examples:
“3+2*2” = 7
” 3/2 ” = 1
” 3+5 / 2 ” = 5
class Solution(object):
def calculate(self, s):
"""
:type s: str
:rtype: int
"""
s+='#'
def cal(p,ret,idx,tmp):
if p==0:
ret[idx].append(int(tmp))
elif p==1:
ret[idx][-1]=ret[idx][-1]*int(tmp)
else:
ret[idx][-1]=ret[idx][-1]/int(tmp)
return ret
ret=[[],[]]
idx=0
p=0
tmp=''
for i in s:
if i=='+' or i=='-':
ret=cal(p,ret,idx,tmp)
tmp=''
idx=(ord(i)-43)/2;p=0
elif i==' ':
pass
elif i=='*' or i=='/':
ret=cal(p,ret,idx,tmp)
tmp=''
if i=='*':
p=1
if i=='/':
p=-1
elif i!='#':
tmp=tmp+i
else:
ret=cal(p,ret,idx,tmp)
return sum(ret[0])-sum(ret[1])