【栈】【字符串语法】牛牛与后缀表达式
https://ac.nowcoder.com/acm/contest/22669/B
两个char相加的结果是对应的ascii值相加
string和char相加的结果是字符串拼接的结果
试比较:
string s = "";
char a = 'a';
char b = 'b';
char c = a + b;
s += a;
s += b;
cout << c << endl;
cout << s << endl;
输出
�
ab
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
typedef long long ll;
// 计算函数,处理 * 、- 和 + 的情况
ll compute(ll first, ll second, const string& s) {
if (s == "*") {
return first * second;
}
if (s == "-") {
return first - second;
}
if (s == "+") {
return first + second;
}
return 0; // 默认返回0,防止编译器报错
}
/**
* 给定一个后缀表达式,返回它的结果
* @param str string字符串
* @return long长整型
*/
long long legalExp(string str) {
string op = "";
stack<ll> stack_;
for (int i = 0; i < str.size(); i++) {
char c = str[i];
// 如果是数字,拼接成多位数
if (isdigit(c)) {
op += c;
}
// 如果是分隔符(这里假设是 '#'),表示数字结束,压入栈中
else if (c == '#') {
if (!op.empty()) {
stack_.push(stoll(op)); // 将拼接好的数字字符串转为整数压栈
op = ""; // 清空用于下一个数字
}
}
// 如果是操作符
else {
ll second = stack_.top(); stack_.pop();
ll first = stack_.top(); stack_.pop();
string s(1, c); // 将字符操作符转换为字符串
ll res = compute(first, second, s);
stack_.push(res);
}
}
return stack_.top(); // 返回最后栈顶的结果
}
};
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具