LeetCode150. 逆波兰表达式求值

题目

逆波兰表达式是一种后缀表达式,所谓后缀就是指算符写在后面。逆波兰表达式主要有以下两个优点:

1.去掉括号后表达式无歧义,也可以依据次序计算出正确结果。
2.适合用栈操作运算:遇到数字则入栈;遇到算符则取出栈顶两个数字进行计算,并将结果压入栈中。

思路

遇到数字则入栈;遇到算符则取出栈顶两个数字进行计算,并将结果压入栈中。

代码

复制代码
 1 class Solution {
 2 public:
 3     int evalRPN(vector<string>& tokens) {
 4         stack<int>stk;
 5         for(int i = 0;i < tokens.size();i++){
 6             if(tokens[i] == "+" ||
 7                  tokens[i] == "-" || tokens[i] == "*" || tokens[i] == "/"){
 8                     int a = stk.top();
 9                     stk.pop();
10                     int b = stk.top(); 
11                     stk.pop();
12                     if(tokens[i] == "+") stk.push(b+a);
13                     if(tokens[i] == "-") stk.push(b-a);
14                     if(tokens[i] == "*") stk.push(b*a);
15                     if(tokens[i] == "/") stk.push(b/a);
16                 }
17                 else{
18                 stk.push(stoi(tokens[i]));
19             }
20         }
21         return stk.top();
22     }
23 };
复制代码

总结:

字符串转换为数字,直接用stoi函数,头文件时#include<cstring>,该函数会做范围检查,默认在int范围内,如果超出 int 范围会报 runtime error 

有关C++ 数字和字符串互相转换

posted @ 2021-01-26 20:22  Uitachi  阅读(84)  评论(0)    收藏  举报
编辑推荐:
· 从 Redis 客户端超时到 .NET 线程池挑战
· C23和C++26的#embed嵌入资源指南
· 「EF Core」框架是如何识别实体类的属性和主键的
· 独立开发,这条路可行吗?
· 我在厂里搞 wine 的日子
阅读排行:
· 他没买 iPad,而是花了半年时间,为所有“穷学生”写了个笔记神器
· Visual Studio 现已支持新的、更简洁的解决方案文件(slnx)格式
· 只需一行命令,Win11秒变Linux开发主机!
· 上周热点回顾(7.7-7.13)
· 也是出息了,业务代码里面也用上算法了。
点击右上角即可分享
微信分享提示