逆波兰表达式

运用lambda表达式和包装器

150. 逆波兰表达式求值 – 力扣(LeetCode)

class Solution {
public:
    int evalRPN(vector<string>& tokens) {
    stack<long long> s;
    map<string,function<long long(long long,long long)>> func=
    {
//包装四种情况函数(lambda表达式) {
"+",[](long long a,long long b){return a+b;}}, {"-",[](long long a,long long b){return a-b;}}, {"*",[](long long a,long long b){return a*b;}}, {"/",[](long long a,long long b){return a/b;}} }; for(auto& e:tokens) { if(func.count(e))//判断e是否存在map中 存在就是操作符 { long long right=s.top();//因为是栈 所以是先取到右 才能取到左 s.pop(); long long left=s.top(); s.pop(); s.push(func[e](left,right));//放入map里计算 } else//不存在就是操作数 { s.push(stoll(e));//操作数就放入栈内 } } return s.top(); } };

Original: https://www.cnblogs.com/LonelyMoNan/p/16732375.html
Author: lemon-Breeze
Title: 逆波兰表达式

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/607305/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球