面完华为后满血复活的小黄鸭上线啦!
思想:
1、定义2个栈,一个压入数据,一个压入运算符
2、定义优先级别:
priority={'(':1,'+':3,'-':3,'*':5,'/':5}
3、如果str[i]是数字,继续查看str[i+1]
if str[i].isdigit():
# print('1')
start=i
while i+1<len(str) and str[i+1].isdigit():
i+=1
date.append(int(str[start:i+1]))
4、如果元算符栈为空,或者str[i]=='(':
直接把元算符压入栈
5、如果str[i]==')'时:
就要把括号里表达式进行计算
运算符栈出栈一个运算符
数据栈出栈两个数据,把计算的结果再放入数据栈
6、如果st[i] in '+-*/':
运算符栈[-1]的优先级>str[i]的优先级,先进行计算
否则str[i]进栈
7、最后的结果:数据栈只剩一个元素,就是这样