leetcode 150.逆波兰表达式求值

150. 逆波兰表达式求值

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

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

注意:

  • 有效的算符为 '+''-''*''/'
  • 每个操作数(运算对象)都可以是一个整数或者另一个表达式。
  • 两个整数之间的除法总是 向零截断
  • 表达式中不含除零运算。
  • 输入是一个根据逆波兰表示法表示的算术表达式。
  • 答案及所有中间计算结果可以用 32 位 整数表示。
cpp 复制代码
class Solution {
public:
    int evalRPN(vector<string>& tokens) {
        // 力扣修改了后台测试数据,需要用longlong
        stack<long long> st; 
        for (int i = 0; i < tokens.size(); i++) {
            if (tokens[i] == "+" || tokens[i] == "-" || tokens[i] == "*" || tokens[i] == "/") {
                long long num1 = st.top();
                st.pop();
                long long num2 = st.top();
                st.pop();
                if (tokens[i] == "+") st.push(num2 + num1);
                if (tokens[i] == "-") st.push(num2 - num1);
                if (tokens[i] == "*") st.push(num2 * num1);
                if (tokens[i] == "/") st.push(num2 / num1);
            } else {
                // stoll是将字符串转换成long long形式的
                st.push(stoll(tokens[i]));
            }
        }

        int result = st.top();
        st.pop(); // 把栈里最后一个元素弹出(其实不弹出也没事)
        return result;
    }
};
相关推荐
STY_fish_201217 分钟前
P11855 [CSP-J2022 山东] 部署
算法·图论·差分
myw07120518 分钟前
湘大头歌程-Ride to Office练习笔记
c语言·数据结构·笔记·算法
H_BB19 分钟前
算法详解:滑动窗口机制
数据结构·c++·算法·滑动窗口
Zero-Talent21 分钟前
“栈” 算法
算法
橘子编程22 分钟前
经典排序算法全解析
java·算法·排序算法
waeng_luo22 分钟前
【鸿蒙开发实战】智能数据洞察服务:待回礼分析与关系维护建议算法
算法·ai编程·鸿蒙
风筝在晴天搁浅22 分钟前
代码随想录 279.完全平方数
算法
不穿格子的程序员25 分钟前
从零开始刷算法——字串与区间类经典题:前缀和 + 单调队列双杀
算法·前缀和·哈希表·双向队列·单调队列
坚持就完事了26 分钟前
十大排序算法
数据结构·算法·排序算法
im_AMBER37 分钟前
Leetcode 63 定长子串中元音的最大数目
c++·笔记·学习·算法·leetcode