NC212914 牛牛与后缀表达式

简介: NC212914 牛牛与后缀表达式

题目: NC212914 牛牛与后缀表达式 ,哈哈,我们今天来看一道简单的数据结构题嘛,这是选自牛客上的一道题,好了,我们一起来看看题意吧:

考虑到直接复制题目,或者截屏的方式不是很方便阅读,我就把直接题目链接放下面!

题目传送门: NC212914 牛牛与后缀表达式

思路:

这道题没什么好说的,根据题意做就是,采用栈这种数据结构比较好做,当然,也可以用数组,还有其他方法!

我们来看看成功AC的代码吧:

#define ll long long
ll calc(string x){
    ll num=0;
    for(int i=0;i<x.size();i++) num=num*10+(x[i]-'0');
    return num;
}
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 给定一个后缀表达式,返回它的结果
     * @param str string字符串 
     * @return long长整型
     */
    long long legalExp(string str) {
        // write code here
        stack<ll> st;
        string s = str;
        string s2="";
        for(int i=0;i<s.size();i++){
           if(s[i]!='#'&&s[i]!='+'&&s[i]!='-'&&s[i]!='*'){
               s2+=s[i];
           }
           if(s[i]=='#'&&s[i]!='+'&&s[i]!='-'&&s[i]!='*')  { ll t = calc(s2) ; st.push(t); s2=""; }
           if(s[i]=='+') {
               ll x2=st.top(); st.pop(); ll x1=st.top(); st.pop();
               st.push(x2+x1);
           }
           if(s[i]=='-') {
               ll x2=st.top(); st.pop(); ll x1=st.top(); st.pop();
               st.push(x1-x2);
           }
           if(s[i]=='*') {
               ll x2=st.top(); st.pop(); ll x1=st.top(); st.pop();
               st.push(x2*x1);
           }
        }
        return st.top();
    }
};


相关文章
|
4月前
输出九九乘法口诀表
【10月更文挑战第19天】输出九九乘法口诀表。
110 5
|
9月前
|
机器学习/深度学习
PTA-九九乘法表
九九乘法表
91 1
|
9月前
|
C++
【PTA】​ L1-080 乘法口诀数列​(C++)
【PTA】​ L1-080 乘法口诀数列​(C++)
115 0
【PTA】​ L1-080 乘法口诀数列​(C++)
|
9月前
PTA-求100以内的素数
求100以内的素数
76 0
|
9月前
PTA-求指定范围内的素数
求指定范围内的素数
110 0
|
9月前
|
算法 C语言
【牛客-算法】NC56 回文数字
🚩 前言 🔥 该专栏作为算法题笔记,记录算法的思路、遇到的问题,以及能跑的代码,持续更新中! 🔥 推荐一款面试、刷题神器牛客网:👉开始刷题学习👈
73 0
|
C++ Python
华为机试HJ50:四则运算
华为机试HJ50:四则运算
174 0
|
存储
每日一题(两数相加)
每日一题(两数相加)
|
算法 C语言
【C语言】输入两个正整数m和n,求其最大公约数和最小公倍数。(要求用while语句实现)
【C语言】输入两个正整数m和n,求其最大公约数和最小公倍数。(要求用while语句实现)
1886 1