LeetCode第一题:Evaluate Reverse Polish Notation

来源:互联网 发布:diy设计软件 编辑:程序博客网 时间:2024/06/01 13:03

时间:2014.06.11

地点:基地

--------------------------------------------------------------------

一、题目

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

--------------------------------------------------------------------

二、逆波兰求值问题,直接上源码

注意除法不满足交换律

#include<vector>#include<stack>#include<string>#include<cctype>#include<iostream>using namespace std;class Solution {public:int evalRPN(vector<string> &tokens) {stack<int> my_stack_int;int lf = 0, rh = 0;for (auto& str : tokens){if (isdigit(str[0]))my_stack_int.push(stoi(str));else{rh = my_stack_int.top();my_stack_int.pop();lf = my_stack_int.top();my_stack_int.pop();switch (str[0]){case '+':lf += rh;break;case '-':lf -= rh;break;case '/':lf /= rh;break;case '*':lf *= rh;break;default:break;}my_stack_int.push(lf);}}return my_stack_int.top();}};int main(){vector<string> str_vec{ "4", "13", "5", "/", "+" };Solution sl;int a = sl.evalRPN(str_vec);cout << a << endl;}


0 0