题解 | #计算器(二)#

计算器(二)

https://www.nowcoder.com/practice/a9c170bfaf7349e3acb475d786ab1c7d

左程云大神的Java代码,抄过来改成Python版本的。一开始用的list,超时了,改成deque,顺利通过。

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param s string字符串 
# @return int整型
#
from collections import deque
class Solution:
    def calculate(self , s: str) -> int:
        # write code here
        dd = deque()
        cur = 0
        i = 0
        while i <len(s):
            if s[i] >='0' and s[i] <='9':
                cur = cur *10 +int(s[i])
                i += 1
            else:
                self.addNum(dd,cur,s[i])
                i += 1
                cur = 0
        self.addNum(dd,cur,'&')
        return self.getAns(dd)

    def addNum(self,dd,num,op):
        if len(dd) == 0:
            dd.append(num)
            dd.append(op)
        elif dd[-1] == '*' or dd[-1] == '/':
            top = dd.pop()
            pre = dd.pop()
            num = pre*num if top == '*' else pre/num
            dd.append(num)
            dd.append(op)
        else:
            dd.append(num)
            dd.append(op)

    def getAns(self,dd):
        ans = int(dd.popleft())
        while len(dd) > 1:
            op = dd.popleft()
            num = int(dd.popleft())
            ans =ans+ num if op == '+' else ans-num
        return ans

全部评论

相关推荐

有没有经济学家能告诉我,三年后中国的就业市场会不会好转?我在校招中拿到了一份9k+的offer,还是行业的龙头企业,心里其实不想再考研了。但又总是担心,万一读研后薪资更高,我会不会后悔呢?
Fyhyuky:三年后肯定不会啊,只会比现在更烂,你自己看看现在有没有什么增长点,电车都是国家补贴兜底才发展出来的,已经比较违背市场自然规律了,互联网更不用说了,国家强力打压,传统制造业转型失败,现在苟延残喘中
点赞 评论 收藏
分享
10-07 20:48
门头沟学院 Java
听说改名就会有offer:可能是实习上着班想到后面还要回学校给导师做牛马,看着身边都是21-25的年纪,突然emo了了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务