题目来源:. - 力扣(LeetCode)
题目思路分析
逆波兰表达式(Reverse Polish Notation, RPN)是一种后缀表达式,在这种表达式中,运算符位于其操作数之后。例如,表达式 3 + 4
在RPN中表示为 3 4 +
。RPN的一个主要优点是它不需要括号来指明运算顺序,因为运算符总是应用于其前面的两个操作数。这使得RPN在计算机内部处理时非常高效,因为我们可以使用栈这种数据结构来依次处理每个元素,遇到操作数就压栈,遇到运算符就从栈中弹出两个操作数进行计算,然后将结果压栈。
题目要求我们实现一个函数 evalRPN
,该函数接受一个字符串数组 tokens
,其中每个字符串要么是操作数,要么是运算符(+、-、*、/),并返回计算后的结果。
代码:
#include <stack>
#include <vector>
#include <string>
#include <cstdlib> // for atoi
class Solution {
public:
// 判断一个字符串是否为数字
bool isNumber(string& token){
// 使用逻辑非和短路运算来简化代码,但这种方法不够直观,且只考虑了简单的运算符
// 更健壮的方式是使用正则表达式或遍历字符检查是否为数字
return !(token =="+" || token == "-"|| token =="*" || token =="/");
}
int eva