题解 | #表达式求值#

表达式求值

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

一眼看过去很简单,实际写的时候发现很多坑。
1.第一步:先不管括号的问题
2.第二步:先不管乘法问题
3.第三步:实现加减运算
4.第四步:解决连续数字问题

class Solution:
    def solve(self, s: str) -> int:
        num, opt, stack = 0, '+', []
        while s:
            item,s = s[0],s[1:]
            
            if(item=='('):
                lens,end = 1,0
                while lens > 0:
                    if s[end] == '(':
                        lens += 1
                    if s[end] == ')':
                        lens -= 1
                    end += 1
                num = self.solve(s[0:end - 1])
                s = s[end:]

            elif item.isdigit():
                num = num*10+int(item)

            if not item.isdigit() or not s:
                if opt == '+':
                    stack.append(num)
                elif opt == '-':
                    stack.append(-num)
                elif opt =='*':
                    stack.append(stack.pop()*num)
                num,opt =0, item

        return sum(stack)


#计算机面试#
全部评论

相关推荐

03-12 09:57
软件测试
程序员小白条:1)确定测试,测开的方向,技术栈不能写这么少 2)课程凑数的,不是99,100分没必要写 3)实习经历这块要有突出的不是劳动性质的亮点,自己设计的什么方案,什么自动化?什么提效工具?不是一些边角料,人云亦云的东西,没吸引力 4) 校园经历纯没用 5)尽量少写减分项
听劝,我这个简历该怎么改...
点赞 评论 收藏
分享
03-03 23:12
已编辑
北京邮电大学 Java
书海为家:我来给一点点小建议,因为毕竟还在学校不像工作几年的老鸟有丰富的项目经验,面试官在面试在校生的时候更关注咱们同学的做事逻辑和思路,所以最好在简历中描述下自己做过项目的完整过程,比如需求怎么来的,你对需求的解读,你想到的解决办法,遇到困难如何找人求助,最终项目做成了什么程度,你从中收获了哪些技能,你有什么感悟。
你的简历改到第几版了
点赞 评论 收藏
分享
评论
11
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务