NC212914 牛牛与后缀表达式
题目
题目描述
给定牛牛一个后缀表达式 ,计算它的结果,例如,1+1对应的后缀表达式为1#1#+,‘#’作为操作数的结束符号。
其中,表达式中只含有‘+’、’-‘、’*‘三种运算,不包含除法。
本题保证表达式一定合法,且计算过程和计算结果的绝对值一定不会超过
示例1
输入
"1#1#+"
返回值
2
说明
1#1#+这个后缀表达式表示的式子是1+1,结果为2
示例2
输入
"12#3#+15#*"
返回值
225
说明
12#3#+15#*这个后缀表达式表示的式子是(12+3)*15,结果为225
备注
题解
知识点:栈,模拟。
遍历字符串,如果是数字则转化存在 里直到遇到 放入栈中并初始化;如果是其他符号则是运算符,判断类型并对应运算。要注意的是,从栈中提取数字是第二个数字到第一个数字提取,是反着的,对减法有影响。
时间复杂度
空间复杂度
代码
#include <bits/stdc++.h> #define ll long long using namespace std; int main() { std::ios::sync_with_stdio(0), cin.tie(0), cout.tie(0); string str; cin >> str; stack<ll> s; ll num = 0; for (auto c : str) { if ('0' <= c && c <= '9') num = num * 10 + c - '0'; else if (c == '#') s.push(num), num = 0; else { ll b = s.top();//!注意栈顶的是后运算的 s.pop(); ll a = s.top(); s.pop(); if (c == '+') s.push(a + b); else if (c == '-') s.push(a - b); else if (c == '*') s.push(a * b); } } cout << s.top() << '\n'; return 0; }
本文来自博客园,作者:空白菌,转载请注明原文链接:https://www.cnblogs.com/BlankYang/p/16436258.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧