每日一题 - 240118 - P1449 后缀表达式


  • TAG - 芝士水题、算法 − 【 S T L − s t a c k 】 芝士水题、算法 - 【STL - stack】 芝士水题、算法STLstack
  • 时间复杂度 - O ( N ) O(N) O(N)
//
#include <bits/stdc++.h>
#include <cctype>
using namespace std;
// #define int long long

void solve() {
    string s;
    cin >> s;

    stack<int> sk;
    for (int i = 0; i < s.size(); i++) {
        if (isdigit(s[i])) {
            int tt = 0;
            while (isdigit(s[i])) tt = (tt << 3) + (tt << 1) + (s[i] - '0'), i++;
            sk.push(tt);
        } else if (s[i] == '.' || s[i] == '@') {
        } else {
            int b = sk.top(); sk.pop();
            int a = sk.top(); sk.pop();
            int tt;
            switch (s[i]) {
                case '+': tt = a + b; break;
                case '-': tt = a - b; break;
                case '*': tt = a * b; break;
                case '/': tt = a / b; break;
            }
            sk.push(tt);
        }
    }
    printf("%d\n", sk.top());
}

signed main() {
    int t = 1;
    // scanf("%d", &t);
    while (t--) solve();

    return 0;
}

实现细节

  • `

参考示意图

  • `

参考链接


作者 | 乐意奥AI

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值