波兰式表达式(后缀表达式)求值

#define _CRT_SECURE_NO_WARNINGS 1
using namespace std;
#include<stdlib.h>
#include<iostream>

#include<vector>
#include<stack>
#include<string>

//力扣

/*
题目要求:
根据逆波兰表示法,求表达式的值。
有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,
也可以是另一个逆波兰表达式。
*/

/*
解题思路:
创建一个栈,若是数字则将这个数字压栈,若是符号则将栈顶两个元素取出分别作为左右操作数进行运算后入栈
*/
class Solution {
public:
    int evalRPN(vector<string>& tokens)//tokens是一个由string类构造的vector
    {
        stack <int> s;
        int left, right;
        int i = 0;
        for (i; i<tokens.size(); i++)
        {
            string &str = tokens[i];//为了使用方便给定义一个string类的变量str作为tokens中每个元素的引用
            if (!("+" == str || "-" == str || "*" == str || "/" == str))
            {
                s.push(atoi(str.c_str()));//将字符类型的变量转化为整型
            }
            else
            {
                right = s.top();
                s.pop();
                left = s.top();
                s.pop();
                switch (str[0])
                {
                case '+':
                    s.push(left + right);
                    break;
                case '-':
                    s.push(left - right);
                    break;
                case '*':
                    s.push(left*right);
                    break;
                case '/':
                    s.push(left / right);
                    break;
                }
            }
        }
        return s.top();
    }
};

int main()
{
    system("pause");
    return 0;
}

当前题目:波兰式表达式(后缀表达式)求值
网址分享:https://www.cdcxhl.com/article6/iijhog.html

成都网站建设公司_创新互联,为您提供微信公众号软件开发虚拟主机企业建站动态网站

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

微信小程序开发