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


相关文章
|
3天前
|
人工智能 网络协议 BI
PTA-求10个整数中的偶数的和
求10个整数中的偶数的和
12 0
|
3天前
|
算法 C语言
【牛客-算法】NC56 回文数字
🚩 前言 🔥 该专栏作为算法题笔记,记录算法的思路、遇到的问题,以及能跑的代码,持续更新中! 🔥 推荐一款面试、刷题神器牛客网:👉开始刷题学习👈
33 0
|
3天前
|
存储 算法 Java
【牛客-算法】NC57 反转数字
题目描述 原题:NC57 反转数字 描述 给定一个32位的有符号整数num,将num中的数字部分反转,最后返回反转的结果 1.只反转数字部分,符号位部分不反转
22 0
|
10月前
AcWing 869. 试除法求约数
AcWing 869. 试除法求约数
|
7月前
|
C++ Python
华为机试HJ50:四则运算
华为机试HJ50:四则运算
|
7月前
|
容器
华为机试HJ89:24点运算
华为机试HJ89:24点运算
|
7月前
|
容器
华为机试HJ102:字符统计
华为机试HJ102:字符统计
|
7月前
华为机试HJ11:数字颠倒
华为机试HJ11:数字颠倒
|
测试技术
【牛客】WY49数对,JZ65不用加减乘除做加法
【牛客】WY49数对,JZ65不用加减乘除做加法
118 0
【牛客】WY49数对,JZ65不用加减乘除做加法
|
算法