本博客rss订阅地址: http://feed.cnblogs.com/blog/u/147990/rss

LeetCode:Evaluate Reverse Polish Notation

题目链接

Evaluate the value of an arithmetic expression in Reverse Polish Notation.

Valid operators are +-*/. Each operand may be an integer or another expression.

Some examples:

  ["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9
  ["4", "13", "5", "/", "+"] -> (4 + (13 / 5)) -> 6

分析:这一题就是写程序计算逆波兰式的结果,遍历表达式,碰到操作数入栈,碰到操作符就从栈顶取出两个操作数,再将计算后的结果入栈,最后栈中剩余的唯一操作数就是计算结果。                                                        本文地址

复制代码
 1 class Solution {
 2 public:
 3     int evalRPN(vector<string> &tokens) {
 4         // IMPORTANT: Please reset any member data you declared, as
 5         // the same Solution instance will be reused for each test case.
 6         int len = tokens.size();
 7         stack<int> S;
 8         for(int i = 0; i < len; i++)
 9         {
10             if(tokens[i] == "+" || tokens[i] == "-" ||
11                 tokens[i] == "*" || tokens[i] == "/")
12             {
13                 int op2 = S.top(); S.pop();
14                 int op1 = S.top(); S.pop();
15                 S.push( op(op1, op2, tokens[i][0]) );
16             }
17             else
18                 S.push(stoi(tokens[i]));
19         }
20         return S.top();
21     }
22     int op(int op1, int op2, char optor)
23     {
24         if(optor == '+')return op1 + op2;
25         else if(optor == '-')return op1 - op2;
26         else if(optor == '*')return op1 * op2;
27         else return op1 / op2;
28     }
29 };
复制代码

【版权声明】转载请注明出处:http://www.cnblogs.com/TenosDoIt/p/3448626.html

posted @   tenos  阅读(3242)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理

本博客rss订阅地址: http://feed.cnblogs.com/blog/u/147990/rss

公益页面-寻找遗失儿童

点击右上角即可分享
微信分享提示