【LeetCode 25】150.逆波兰表达式求值

简介: 【LeetCode 25】150.逆波兰表达式求值

一、题意

二、思考过程

逆波兰表达式就是 一种后缀表达式。所谓后缀就是指运算符写在后面。

逆波兰表达式主要有以下两个优点:

  • 去掉括号后表达式无歧义。
  • 适合用栈操作运算:遇到数字则入栈;遇到运算符则取出栈顶两个数字进行运算,并将结果压入栈中。

其实逆波兰表达式相当于是二叉树中的后序遍历。

进一步看,这道题就是一个相邻字符串消除(运算)的过程

class Solution {
public:
    int evalRPN(vector<string>& tokens) {
        stack<int> st;
        for (int i = 0; i < tokens.size(); i++) {
            if (tokens[i] == "+" || tokens[i] == "-" || tokens[i] == "*" || tokens[i] == "/") {
                int num1 = st.top();
                st.pop();
                int 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 {
                st.push(stoi(tokens[i]));
            }
        }
        int result = st.top();
        st.pop(); // 把栈里最后一个元素弹出(其实不弹出也没事)
        return result;
    }
};


目录
相关文章
|
11月前
|
运维 Devops 测试技术
云效DevOps:加速企业数字化转型的利器
云效DevOps是阿里巴巴推出的企业级一站式平台,覆盖需求管理到应用运维全生命周期。其核心价值包括全流程自动化、高效协同、质量保障与可视化度量。功能涵盖代码管理、持续集成、持续交付及应用运维,支持微服务架构、大规模团队协作等最佳实践。成功案例显示,云效显著提升企业软件交付效率与质量,助力数字化转型,未来将融合AI技术实现更智能的交付体验。
562 11
|
开发框架 运维 监控
Spring Boot中的日志框架选择
在Spring Boot开发中,日志管理至关重要。常见的日志框架有Logback、Log4j2、Java Util Logging和Slf4j。选择合适的日志框架需考虑性能、灵活性、社区支持及集成配置。本文以Logback为例,演示了如何记录不同级别的日志消息,并强调合理配置日志框架对提升系统可靠性和开发效率的重要性。
610 5
|
监控 网络协议 Linux
在Linux中,如何使用 tcpdump 嗅探 80 端口的访问看看谁最⾼?
在Linux中,如何使用 tcpdump 嗅探 80 端口的访问看看谁最⾼?
|
应用服务中间件 nginx 容器
upstream server temporarily disabled while connecting to upstream(记录bug)
upstream server temporarily disabled while connecting to upstream(记录bug)
728 0
|
SQL 关系型数据库 MySQL
MySQL周内训参照2、DDL与DML语句
MySQL周内训参照2、DDL与DML语句
151 1
|
开发工具 数据安全/隐私保护 git
idea使用git第一次push出现Push failed的问题
重装了idea和git之后, 第一次使用git推送报以上问题, 找了好久
559 3
|
存储 自然语言处理 安全
外贸企业邮箱解析:通向全球市场的邮件之路
外贸企业邮箱对于全球贸易至关重要,主要解决语言沟通障碍、信息安全风险和团队协作不畅三大问题。Zoho Mail作为示例,提供73种语言翻译、强大的邮件管理和安全保障,以及灵活的协作工具。其翻译功能免费,支持试用,是外贸企业的理想选择。
318 0
|
资源调度 JavaScript 前端开发
你还在认为TypeScirpt 是 AnyScript ? --《前端那些事》
去年还有很多朋友犹豫用不用学习`TypeScript` , 很多被社区朋友发的文章误导, `TypeScript` 就是 `AnyScript`。
13737 0
你还在认为TypeScirpt 是 AnyScript ? --《前端那些事》
|
前端开发 Go API
Kratos微服务框架API工程化指南
Kratos的RPC默认使用的是[gRPC](https://github.com/grpc/grpc),与此同时我们还可以通过gRPC的[grpc-gateway](https://github.com/grpc-ecosystem/grpc-gateway)功能对RESTfull进行支持。这样,我们就可以同时支持gRPC和REST了。而这一切Kratos都已经封装好,无需知道底层的一切,用就好了。
2246 0
Kratos微服务框架API工程化指南

热门文章

最新文章

下一篇
开通oss服务