Python编程练习:Leetcode__227.基本计算器II__python3

 

class Solution:
    def calculate(self, s: str) -> int:

        s=s.replace(' ','')
    
        l=len(s)#字符串长度
        templist=[]
        i=0
        while i<l:#处理字符串成列表
            temp='0'
            while s[i].isdigit():
                temp=temp+s[i]
                i=i+1
                if i==l:
                    break

            temp=int(temp.strip())
            templist.append(temp)
            if i<l:
                templist.append(s[i])
                i=i+1
        
        listl=len(templist)
        k=0
        reslist=[]
        ysflist=[]
        while k<listl:
            if str(templist[k]).isdigit():
                reslist.append(templist[k])
                k=k+1
            elif templist[k] in ('+','-'):
                if len(ysflist)>0:#运算符栈不空
                    ysf=ysflist.pop()
                    yz_r=reslist.pop()
                    yz_f=reslist.pop()
                    if ysf=='+':
                        res=yz_f+yz_r
                    elif ysf=='-':
                        res=yz_f-yz_r
                    reslist.append(res)

                ysflist.append(templist[k])
                k=k+1
            elif templist[k]=='*':
                yz_f=reslist.pop()
                yz_r=templist[k+1]
                res=yz_f*yz_r

                reslist.append(res)
                k=k+2
            elif templist[k]=='/':
                yz_f=reslist.pop()
                yz_r=templist[k+1]
                res=yz_f//yz_r#整除

                reslist.append(res)
                k=k+2
        if len(ysflist)>0:
            yz_r=reslist.pop()
            yz_f=reslist.pop()
            if ysflist[0]=='+':
                res=yz_f+yz_r
            elif ysflist[0]=='-':
                res=yz_f-yz_r
            
            reslist.append(res)
        
        return reslist[-1]

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值