美文网首页LeetCode
150. 逆波兰表达式求值

150. 逆波兰表达式求值

作者: 凌霄文强 | 来源:发表于2019-03-02 10:18 被阅读0次

    题目描述

    根据逆波兰表示法,求表达式的值。

    有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。

    说明:

    整数除法只保留整数部分。
    给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。
    示例 1:

    输入: ["2", "1", "+", "3", "*"]
    输出: 9
    解释: ((2 + 1) * 3) = 9
    示例 2:

    输入: ["4", "13", "5", "/", "+"]
    输出: 6
    解释: (4 + (13 / 5)) = 6
    示例 3:

    输入: ["10", "6", "9", "3", "+", "-11", "", "/", "", "17", "+", "5", "+"]
    输出: 22
    解释:
    ((10 * (6 / ((9 + 3) * -11))) + 17) + 5
    = ((10 * (6 / (12 * -11))) + 17) + 5
    = ((10 * (6 / -132)) + 17) + 5
    = ((10 * 0) + 17) + 5
    = (0 + 17) + 5
    = 17 + 5
    = 22

    知识点


    Qiang的思路

    该题可以通过栈进行实现,要注意的是如何将字符串转换为整型。

    class Solution {
    public:
        int evalRPN(vector<string>& t) {
            stack<int> s;
            for(int i=0;i<t.size();i++){
                if(t[i]=="+"){
                    int a=s.top();
                    s.pop();
                    int b=s.top();
                    s.pop();
                    s.push(a+b);
                }
                else if(t[i]=="-"){
                    int a=s.top();
                    s.pop();
                    int b=s.top();
                    s.pop();
                    s.push(b-a);
                }
                else if(t[i]=="*"){
                    int a=s.top();
                    s.pop();
                    int b=s.top();
                    s.pop();
                    s.push(a*b);
                }
                else if(t[i]=="/"){
                    int a=s.top();
                    s.pop();
                    int b=s.top();
                    s.pop();
                    s.push(b/a);
                }
                else{
                    stringstream ss;
                    ss<<t[i];
                    int si;
                    ss>>si;
                    s.push(si);
                }
            }
            return s.top();
        }
    };
    

    作者原创,如需转载及其他问题请邮箱联系:lwqiang_chn@163.com
    个人网站:https://www.myqiang.top

    相关文章

      网友评论

        本文标题:150. 逆波兰表达式求值

        本文链接:https://www.haomeiwen.com/subject/szfeuqtx.html