徐州人才网官方网站,报告格式,做网站需要懂什么技术,信誉好的企业网站开发思路
用栈来完成#xff1b;
考虑到运算关系#xff0c;先乘除后加减#xff1b;此外#xff0c;一般计算式首个数字式正数#xff1b;判断字符是否为数字#xff0c;str.isdigit()字符转数字#xff1a;ord(str) - ord(‘0’)遇到加减符#xff0c;压栈数字#xf…思路
用栈来完成
考虑到运算关系先乘除后加减此外一般计算式首个数字式正数判断字符是否为数字str.isdigit()字符转数字ord(str) - ord(‘0’)遇到加减符压栈数字遇到乘除符先运算再压栈遍历完后再将栈内数字求和
代码
class Solution:def calculate(self, s: str) - int:stack []n len(s)preSign num 0for i in range(n):if s[i] ! and s[i].isdigit():num num * 10 ord(s[i]) - ord(0)if i n - 1 or s[i] in -*/:if preSign :stack.append(num)elif preSign -:stack.append(-num)elif preSign *:stack.append(stack.pop() * num)else:stack.append(stack.pop // num)preSign s[i]num 0return sum(stack)