洛谷 P1449 后缀表达式【Python】

题目链接
浅浅地记录我自己的洛谷刷题情况


目录

一、问题重述

1.题目描述

2.输入格式

3.输出格式

4.输入输出样例

5.说明/提示

二、大概思路

三、完整AC代码


问题重述

题目描述

这里放图片

输入格式

这里放图片

输出格式

这里放图片

输入输出样例

#样例1
输入:
输出:

说明/提示

这里放图片


大概思路

这里写思路


完整AC代码

在这里插入代码片

**


目录

一、问题重述

1.题目描述

2.输入格式

3.输出格式

4.输入输出样例

5.说明/提示

二、大概思路

三、完整AC代码


问题重述

题目描述 问题描述

输入格式

在这里插入图片描述

输出格式

在这里插入图片描述

输入输出样例

输入:3.5.2.-*7.+@
输出:16

说明/提示

在这里插入图片描述


大概思路

看到后缀表达式这题首先就想到了二叉树的后根周游,但是这题并不用用到树这个数据结构,我们通过分析观察,发现此题与栈的特性(先进后出)很是相似,所以首先可以考虑用栈来做,具体分析如下图(以输入样例为例)

  1. 3,5,2依次入栈,如图
    在这里插入图片描述
    2.接下来读到运算符号“-”,代表着需要有两个元素弹出栈,需要注意不管是减法还是除法,先出栈的都是减数(除数),所以接下来会依次弹出元素2,5,将5-2的结果入栈后:
    在这里插入图片描述
    3.以下同理,当读到运算符的时候弹出栈里面的两个元素进行运算,运算后将结果存入栈中,到最后栈里面只会剩余一个元素,这个元素就是后缀表达式的运算结果,我们只需要将最后的结果输出出来即可

完整AC代码

s = input()
stack = []
a = ""
for i in s:             # 执行入栈和出栈操作
    if i == "+":
        b = stack.pop()
        c = stack.pop()
        stack.append(c + b)
        continue
    elif i == "-":
        b = stack.pop()
        c = stack.pop()
        stack.append(c - b)
        continue
    elif i == "*":
        b = stack.pop()
        c = stack.pop()
        stack.append(c * b)
        continue
    elif i == "/":
        b = stack.pop()
        c = stack.pop()
        stack.append(int(c / b))
        continue
    if i != ".":
        a += i
    else:
        stack.append(int(a))
        a = ""
print(stack.pop())
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值