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

  • P1449 后缀表达式

  • TAG - 芝士水题、算法 − 【 S T L − s t a c k 】 芝士水题、算法 - 【STL - stack】 芝士水题、算法STLstack
  • 时间复杂度 - O ( N ) O(N) O(N)
//
#include 
#include 
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;
}

实现细节

  • `

参考示意图

  • `

参考链接

  • c++判断是否数字以及字母相关函数
  • C++中常见的容器及复杂度

作者 | 乐意奥AI

你可能感兴趣的:(#,题单,-,STL超级作业,算法)