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();
    }
};


相关文章
|
7月前
|
人工智能 网络协议 BI
PTA-求10个整数中的偶数的和
求10个整数中的偶数的和
58 0
|
C语言
C语言之回文数的求解。回文数一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
C语言之回文数的求解。回文数一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
200 0
|
2月前
lanqiao OJ 649 算式900
lanqiao OJ 649 算式900
19 1
|
6月前
|
容器
【题解】NowCoder NC313 两个数组的交集
【题解】NowCoder NC313 两个数组的交集
41 6
|
6月前
|
知识图谱
【题解】NowCoder BC64 牛牛的快递
【题解】NowCoder BC64 牛牛的快递
44 7
|
6月前
|
C语言
C语言----最大公约数和最小公倍数的求法
C语言----最大公约数和最小公倍数的求法
|
6月前
|
C语言
C语言---最大公约数和最小公倍数的求法
C语言---最大公约数和最小公倍数的求法
|
7月前
|
存储
【力扣】2. 两数相加、445. 两数相加Ⅱ
【力扣】2. 两数相加、445. 两数相加Ⅱ
剑指offer JZ49把字符串转换成整数
剑指offer JZ49把字符串转换成整数
41 0