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