【栈】【字符串语法】牛牛与后缀表达式

news/2024/10/7 0:14:00

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();  // 返回最后栈顶的结果}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/68508.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

使用云服务器搭建RustDesk实现远程控制

RustDesk它是一个远程控制的方案,目前处于免费阶段,一种链接使用RustDesk自己的服务器来转发,另一种则是使用自己服务器搭建的进行转发,其实Teamview,向日葵,Todesk之所有流畅就是背后服务器的支持,而在这里使用普通的云服务器就可以流程使用了, 官方地址 https://rust…

【主机持久化】注册表自动运行

HKCU 和 HKLM 中的 AutoRun 值允许应用程序在开机时启动,通常这些值用于启动本机和第三方应用程序,例如软件更新程序、下载助手、驱动程序实用程序等 beacon> cd C:\ProgramData beacon> upload C:\Payloads\http_x64.exe beacon> mv http_x64.exe updater.exe beac…

pbootcms模板如何调用时间 时间格式大全

PbootCMS列表页和详情页中时间格式化的不同样式及其效果:场景 标签 参数 效果列表页 [list:date] 无参数 2021-12-06 09:12:30列表页 [list:date style=Y-m-d] style=Y-m-d 2021-12-06列表页 [list:date style=Y] style=Y 2021列表页 [list:date style=m-d] style=m-d 12-06列…

宝塔面板修改端口号,无法访问_宝塔修改端口后无法访问

宝塔面板修改端口号后无法访问的解决步骤:确认新端口号:确保已正确记下新的宝塔面板端口号。检查防火墙设置:如果服务器有防火墙(如iptables或ufw),确保新的端口已被添加到防火墙规则中允许外部访问。更新DNS解析或hosts文件:如果原来通过域名直接访问宝塔面板,可能需要…

连接Mysql时出现的“no database selected”错误该如何解决?

遇到“no database selected”错误通常是因为在尝试执行SQL查询时没有明确指定要使用的数据库。以下是解决这个问题的步骤:确认连接时已选择数据库在连接数据库之后,确保已经选择了具体的数据库。例如,在MySQL中,可以使用 USE <database_name>; 语句来选择一个数据库…

Navicat连接数据库遭遇1045错误:如何解决及预防措施

遇到 Navicat 连接 MySQL 数据库时出现 1045 错误(访问被拒绝,用户名或密码错误),可以通过以下几个步骤来解决和预防这个问题: 解决方法确认用户名和密码确认在 Navicat 中输入的用户名和密码是否正确。 可以尝试在 MySQL 命令行中验证用户名和密码是否正确。重置密码如果…

连接数据库1045错误

遇到 MySQL 的 1045 错误,通常表示“访问被拒绝,用户名或密码错误”。以下是解决此问题的步骤: 1. 确认用户名和密码检查用户名和密码是否正确:确认登录数据库时使用的用户名和密码是否正确无误。 如果不确定密码,可以尝试重置密码。2. 重置密码通过命令行重置密码:如果忘…

打不开网站并提示网站还原错误如何处理

当遇到“网站还原错误”导致无法打开网站时,可以尝试以下几种方法来解决问题:清除浏览器缓存和Cookies清除浏览器中的缓存数据和Cookies,有时候这些数据可能会导致加载问题。 在浏览器设置中找到“清除浏览数据”选项进行操作。更换浏览器尝试使用不同的浏览器访问该网站,排…