【Leetcode栈与队列】150. 逆波兰表达式求值(后缀表达式求值!!看作对对碰游戏!!)

文章目录

  • Leetcode150
    • 1.问题描述
    • 2.解决方案
  • 计算机的思考方式:

Leetcode150

1.问题描述

【Leetcode栈与队列】150. 逆波兰表达式求值(后缀表达式求值!!看作对对碰游戏!!)_第1张图片
【Leetcode栈与队列】150. 逆波兰表达式求值(后缀表达式求值!!看作对对碰游戏!!)_第2张图片

2.解决方案

1.逆波兰表达式优点

【Leetcode栈与队列】150. 逆波兰表达式求值(后缀表达式求值!!看作对对碰游戏!!)_第3张图片

2.逆波兰表达式相当于是二叉树中的后序遍历,又是一个类似对对碰的题目

【Leetcode栈与队列】150. 逆波兰表达式求值(后缀表达式求值!!看作对对碰游戏!!)_第4张图片

3.你会发现我代码实现的时候完全没考虑意外情况,也就是后缀表达式不合法会有一些意外,判空,或者遇到第一个运算符,栈中没有两个元素等等这种不合法,主要是题目中都说了没有不合法,但如果没说判断意外也是很复杂的!


class Solution {
     
public:
    int evalRPN(vector<string>& tokens) {
     
        stack<int> s;
        for (string item: tokens) {
     
            if(item=="+"||item=="-"||item=="*"||item=="/"){
     
                int a=s.top(); s.pop();
                int b=s.top(); s.pop();
                if(item=="+") s.push(b+a);
                if(item=="-") s.push(b-a);
                if(item=="*") s.push(b*a);
                if(item=="/") s.push(b/a);
            } else{
     
                s.push(stoi(item));
            }
        }
        return s.top();
    }
};



计算机的思考方式:

【Leetcode栈与队列】150. 逆波兰表达式求值(后缀表达式求值!!看作对对碰游戏!!)_第5张图片

你可能感兴趣的:(#,栈与队列,leetcode,数据结构,算法)