牛牛与后缀表达式

牛牛与后缀表达式

https://ac.nowcoder.com/acm/contest/9556/C

后缀表达式转中缀表达式

1、建立一个栈,从左向右扫描后缀表达式,遇到运算数则压入栈;

2、遇到运算符就把栈顶两个元素出栈,执行运算,得到的结果作为新的运算符再压入栈;

3、依次走到表达式结尾;

例如后缀表达式 "12#3#+15#*", 转化为中缀表达式为:

  1. 数值 12 入栈
  2. 数值 3 入栈
  3. 遇到运算符 '+' ,将 12 和 3 出栈,执行加法操作得到 15, 再把 15 入栈
  4. 数值 15 入栈
  5. 遇到运算符 '*' ,将 15 和 15 出栈,执行乘法操作得到 225, 再把 225 入栈。

最后栈内的元素 225 就是最后的答案。

这题直接开个栈模拟一下就行,注意要开 long long.

读数字的话,可以用类似于快读的方法来读取。

Code

    long long solve(string str) {
        int n = str.length();
        long long sta[1000010];
        int i = 0, top = 0;
        long long s = 0;
        while(1)
        {
            if(i >= n) break;
            char ch = str[i];
            if(ch == '#')//读数字
            {
                sta[++top] = s;
                s = 0;
            }
            else if(ch == '+')//加法操作
            {
                long long a = sta[top--];
                long long b = sta[top--];
                sta[++top] = a+b;
            }
            else if(ch == '-')//减法操作
            {
                long long a = sta[top--];
                long long b = sta[top--];
                sta[++top] = b-a;
            }
            else if(ch == '*')//乘法操作
            {
                long long a = sta[top--];
                long long b = sta[top--];
                sta[++top] = a * b;
            }
            else 
            {
                s = s * 10 + str[i] - '0';
            }
            i++;
        }
        return sta[top];
    }
全部评论

相关推荐

点赞 收藏 评论
分享
正在热议
# 牛客帮帮团来啦!有问必答 #
1150645次浏览 17147人参与
# 通信和硬件还有转码的必要吗 #
11172次浏览 101人参与
# 不去互联网可以去金融科技 #
20270次浏览 255人参与
# 和牛牛一起刷题打卡 #
18790次浏览 1635人参与
# 实习与准备秋招该如何平衡 #
203310次浏览 3625人参与
# 大厂无回复,继续等待还是奔赴小厂 #
4941次浏览 30人参与
# OPPO开奖 #
19177次浏览 267人参与
# 通信硬件薪资爆料 #
265829次浏览 2484人参与
# 国企是理工四大天坑的最好选择吗 #
2202次浏览 34人参与
# 互联网公司评价 #
97644次浏览 1279人参与
# 简历无回复,你会继续海投还是优化再投? #
25032次浏览 354人参与
# 0offer是寒冬太冷还是我太菜 #
454757次浏览 5124人参与
# 国企和大厂硬件兄弟怎么选? #
53885次浏览 1012人参与
# 参加过提前批的机械人,你们还参加秋招么 #
14628次浏览 349人参与
# 硬件人的简历怎么写 #
82281次浏览 852人参与
# 面试被问第一学历差时该怎么回答 #
19377次浏览 213人参与
# 你见过最离谱的招聘要求是什么? #
27969次浏览 247人参与
# 学历对求职的影响 #
161183次浏览 1804人参与
# 你收到了团子的OC了吗 #
538620次浏览 6386人参与
# 你已经投递多少份简历了 #
344092次浏览 4963人参与
# 实习生应该准时下班吗 #
96952次浏览 722人参与
# 听劝,我这个简历该怎么改? #
63511次浏览 622人参与
牛客网
牛客企业服务