LeetCode算法题目:Evaluate Reverse Polish Notation

来源:互联网 发布:mac可清除空间如何清除 编辑:程序博客网 时间:2024/05/22 17:06

题目:

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

  • 分析:

    逆波兰式计算等式非常容易,利用堆栈即可完成。另外,程序中还需要实现整数与字符串之间的相互转换。

  • 这题目以前做过,所以一遍AC。
  • 代码:

    class Solution {public:    int evalRPN(vector<string>& tokens) {        int len=tokens.size();        stack<int> S;        for(int i = 0; i < len; i++)        {            if(tokens[i] == "+" || tokens[i] == "-" ||                tokens[i] == "*" || tokens[i] == "/")            {                int op2 = S.top();                S.pop();                int op1 = S.top();                S.pop();                S.push( op(op1, op2, tokens[i][0]) );            }            else                S.push(stoi(tokens[i]));//stoi() 把字符串转换成数字        }        return S.top();    }    int op(int op1, int op2, char optor)    {        if(optor == '+')return op1 + op2;        else if(optor == '-')return op1 - op2;        else if(optor == '*')return op1 * op2;        else return op1 / op2;    }};
    0 0
    原创粉丝点击