首页 > 其他分享 >LeetCode150 逆波兰表达式求值

LeetCode150 逆波兰表达式求值

时间:2024-08-07 16:52:38浏览次数:13  
标签:LeetCode150 item2 item1 st tokens int push 求值 表达式

前言

题目: 150. 逆波兰表达式求值
文档: 代码随想录——逆波兰表达式求值
编程语言: C++
解题状态: 成功解答!

思路

还是利用栈的思想,遍历到数字时,加入栈,遍历到运算符时,取出两个数进行运算,并将结果加入到栈中。

代码

class Solution {
public:
    int evalRPN(vector<string>& tokens) {
        stack<int> st;

        int item1;
        int item2;
        for (int i = 0; i < tokens.size(); i++) {
            if (tokens[i] != "+" && tokens[i] != "-" && tokens[i] != "*" && tokens[i] != "/") {
                st.push(stoll(tokens[i]));
            } else {
                item1 = st.top();
                st.pop();
                item2 = st.top();
                st.pop();
                if (tokens[i] == "+") {
                    st.push(item1 + item2);
                } else if (tokens[i] == "-") {
                    st.push(item2 - item1);
                } else if (tokens[i] == "*") {
                    st.push(item2 * item1);
                } else {
                    st.push(item2 / item1);
                }
            }
        }

        int res = st.top();

        return res;
    }
};
  • 时间复杂度: O ( n ) O(n) O(n)
  • 空间复杂度: O ( n ) O(n) O(n)

标签:LeetCode150,item2,item1,st,tokens,int,push,求值,表达式
From: https://blog.csdn.net/daishabby2486/article/details/140983941

相关文章

  • 表达式相关(一)操作数栈、运算符栈
    NOIP2013普及组T2只有加法和乘法的表达式思考:使用tok来存放操作数或操作符(在编译器词法分析中称之为token,故简写为tok);输入只有一行可以用fgets,不知道题目给的输入文件有没有换行(fgets是会读入换行符的),所以还要加个判断,不然存放的时候会把换行符也当做运算符对于2+3+...的表达......
  • 通配符和正则表达式区别
    通配符和正则表达式区别通配符是shell自带的用于匹配文件名的工具,多用在文件名上,比如查找find,ls,cp等等。正则表达式则需要特定命令的支持才可以使用,如:grep、sed和awk(号称Linux三剑客)、vi/vim、perl等,这些都是处理文本的工具。其次,shell对通配符与正则表达式的处理也有不同,“......
  • ABAP 宿主表达式(Host Expressions)
    ABAP宿主表达式是一种在ABAP7.40及更高版本中引入的特性,‌它允许在SQL表达式的操作数位置或编写SQL语句的工作区中使用任何ABAP表达式。‌ 这种表达式通过在表达式前加上@符号来标识,‌形式为@(abap_expression)。‌宿主表达式的引入,‌使得ABAP开发者能够更灵活地在SQL查询中使用......
  • 正则表达式(分组、零宽断言)
     目录正则表达式分组捕获组编号捕获组(pattern)命名捕获组(?\<name>pattern)非捕获组(?:pattern)零宽断言先行断言零宽正向先行断言(?=pattern1)pettern2零宽负向先行断言(?!pattern1)pettern2后行断言零宽正向后行断言(?<=pattern1)petter......
  • 正则表达式
    正则表达式目录正则表达式字符通配符次数通配符字符类定位符分组和量词选择和逻辑运算符边界匹配符转义特殊字符预定义字符类字符通配符.:匹配任意单个字符(除了换行符)。次数通配符*:前一个字符的0次或多次。例如,a*可以匹配"cat"中的"c",也可以匹配"apple"中的"app"......
  • Apple开发_正则表达式相关
    NSString+Regex.h#import<Foundation/Foundation.h>//正则表达式相关@interfaceNSString(Regex)//邮箱验证-(BOOL)is_Email;//手机号码验证-(BOOL)is_Phone_Num;//车牌号验证-(BOOL)is_Car_No;//网址验证-(BOOL)is_Url;//邮政编码-(BOOL)is_......
  • 正则表达式
    正则表达式一.字符通配符字符通配符是一种在多种编程语言和工具中广泛使用的特殊字符或字符序列,它们用于匹配或比较字符串时表示一组字符的模式。字符通配符可以实现模糊匹配,使得字符串处理更加灵活和高效。在Java中,字符通配符的使用主要体现在以下几个方面:1.正则表达式中的通......
  • Python中使用正则表达式
    摘要:正则表达式,又称为规则表达式,它不是某种编程语言所特有的,而是计算机科学的一个概念,通常被用来检索和替换某些规则的文本。一.正则表达式的语法①行定位符行定位符就是用来描述字符串的边界。"^"表示行的开始,"$"表示行的结束。^tm  #tmequalTomorrowMoon可以......
  • 15.75.【C语言】表达式求值
    目录一.整型提升1.定义2.一.整型提升1.定义C语言中整型算术运算总是至少以缺省(默认)整型类型的精度来进行的。为了获得这个精度,表达式中的字符和短整型操作数在使用之前被转换为普通整型,这种转换称为整型提升2.整型提升的原因:表达式的整型运算要在CPU的相应运算器件......
  • C++ //练习 15.31 已知s1、s2、s3和s4都是string,判断下面的表达式分别创建了什么样的
    C++Primer(第5版)练习15.31练习15.31已知s1、s2、s3和s4都是string,判断下面的表达式分别创建了什么样的对象:(a)Query(s1)|Query(s2)&~Query(s3);(b)Query(s1)|(Query(s2)&~Query(s3));(c)(Query(s1)&(Query(s2))|(Query(s3)&Query(s4)));......