LeetCode 150:逆波兰表达式

news/2024/7/24 12:01:03 标签: leetcode, 算法, c++

题目描述
给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式。

请你计算该表达式。返回一个表示表达式值的整数。

注意:
有效的算符为 ‘+’、‘-’、‘*’ 和 ‘/’ 。
每个操作数(运算对象)都可以是一个整数或者另一个表达式。
两个整数之间的除法总是 向零截断 。
表达式中不含除零运算。
输入是一个根据逆波兰表示法表示的算术表达式。
答案及所有中间计算结果可以用 32 位 整数表示。

示例 1:
输入:tokens = [“2”,“1”,“+”,“3”,“*”]
输出:9
解释:该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9

示例 2:
输入:tokens = [“4”,“13”,“5”,“/”,“+”]
输出:6
解释:该算式转化为常见的中缀算术表达式为:(4 + (13 / 5)) = 6

解题思想
使用栈

class Solution {
public:
    int evalRPN(vector<string>& tokens) {
        stack<int> stk;
        int a, b, c;
        for (string s : tokens) {
            if (s !="+" && s != "-" && s!= "/" && s != "*") {
                //stoi()  将string转为int
                stk.push(stoi(s));
            }
            else {
                a = stk.top(), stk.pop();
                b = stk.top(), stk.pop();
                switch (s[0])
                {
                    case '+':c = b + a; break;
                    case '-':c = b - a; break;
                    case '*':c = b * a; break;
                    case '/':c = b / a; break;
                }
                stk.push(c);
            }
        }
        return stk.top();
    }
};

http://www.niftyadmin.cn/n/5458264.html

相关文章

前端发版上线出现白屏问题

目录 路由配置问题资源缓存问题首屏加载过慢 &#xff1a;喂&#xff0c;你的页面白啦&#xff01; 出现上线白屏的问题有很多&#xff0c;如&#xff1a;配置错误、缓存问题、浏览器兼容问题&#xff0c;根据不同情况去解决。 路由配置问题 问题描述&#xff1a; 在vue开发…

产品说明书二维码生成的优势:数字化时代的智能选择

随着二维码技术的不断发展&#xff0c;越来越多的企业开始选择使用二维码来展示产品使用说明&#xff0c;以取代传统的纸质说明书。这一趋势不仅符合数字化时代的潮流&#xff0c;更为消费者提供了更便捷、更智能的产品使用体验。以下是产品说明书二维码生成的优势&#xff1a;…

卷积神经网络层结构概述

一、卷积神经网络基本的层结构 &#xff08;一&#xff09;卷积层 1.可参考此文章&#xff1a;https://blog.csdn.net/tjlakewalker/article/details/83275322 2.实现代码: import torch.nn as nn conv nn.Conv2d(in_channels3, #输入通道out_channels64, #输出通道kerne…

MySQL学习笔记------函数

目录 函数 字符串函数 数值函数 函数 指一段可以直接被另一段程序调用的程序或代码 字符串函数 MySQL中内置了很多字符串函数&#xff0c;常用如下&#xff1a;select 函数 concat(s1,s2,s3,...,sn) 字符串拼接&#xff0c;将s1,s2,...,sn拼接成一个字符串 #字符串拼…

固件签名解决方案-安当CAS密码应用系统

什么是固件签名 固件签名是在固件代码中添加数字签名以验证其真实性和完整性的过程。数字签名是一种加密机制&#xff0c;它可以确保固件没有以任何方式被篡改、损坏或修改。作为一个物联网设备或嵌入式开发人员&#xff0c;固件签名很重要&#xff0c;因为它提供了一种方法来…

【让所有司机获得总体最多的分配问题】

【题目】 现有司机2N人&#xff0c;调度中心会将所有司机平均分配给A,B两个区域。第i个司机去A可得收入为income[i][0]&#xff0c;第i个司机去B可得收入为income[i][1]&#xff0c;返回所有调度方案中能使所有司机总收入最高的方案是多少钱&#xff1f; 【思路&#xff1a;暴力…

Unity 渲染

渲染的三个阶段 1&#xff1a;应用阶段 1.1 数据的准备 遮挡剔除&#xff0c;层级剔除。 渲染顺序&#xff0c;UI在Herachy窗口按照层级渲染&#xff0c;其余物体由大概按照先近后远。 打包渲染数据发送给显存&#xff0c;主要包括有模型信息&#xff0c;变换矩阵&#xff0c…

【C++的奇迹之旅】C++关键字命名空间使用的三种方式C++输入输出命名空间std的使用惯例

文章目录 &#x1f4dd;前言&#x1f320; C关键字(C98)&#x1f309; 命名空间&#x1f320;命名空间定义&#x1f309;命名空间使用 &#x1f320;命名空间的使用有三种方式&#xff1a;&#x1f309;加命名空间名称及作用域限定符&#x1f320;使用using将命名空间中某个成员…