karat calculator 三题
分析
这类计算题题目,带*\就用数字带符号压入栈
带括号就sign 1和-1每次相乘,然后+1,-1压入栈
class Calculator:
def calculate(self,strs): #1+2-3
sign = 1
num = 0
res = 0
for i in strs:
if i.isdigit():
num = num*10+int(i)
if i == '+':
res+=sign*num
sign=1 #定的是将来的符号
num = 0
if i == '-':
res += sign * num
sign = -1
num = 0
if num:
res += sign * num #不要忘了最后一个符号
return res
c = Calculator()
ret = c.calculate("1999")
print(ret)题目
第一題是給你一個string例如"2+3-999"回傳計算結果 第二題加上parenthesis例如"2+((8+2)+(3-999))"一樣回傳計算結果 第三道题是加了变量名的。。会给你一个map比如{'a':`1, 'b':2, 'c':3},假设输入为"a+b+c+1"输出要是7,如果有未定义的变量,比如"a+b+c+1+d"输出就是7+d
分析
1,3不用stack,1用sign, 3用op str
2带括号或者*、需要stack,sign +1 -1
Last updated
Was this helpful?