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
s思路: 1. 一看結(jié)構(gòu),就是需要用stack。例如: [“4”, “13”, “5”, “/”, “+”] ,把遇到的數(shù)先放進(jìn)stack,所以當(dāng)遇到”/”時(shí),stack里面有三個(gè)數(shù):4,13,5。遇到”/”,表示取stack 前面的2個(gè)數(shù)做除法,所以13/5=2,然后把2放進(jìn)stack;當(dāng)遇到”+”時(shí),表示取stack 前面的2個(gè)數(shù)做加法,所以4+2=6,然后把6放進(jìn)stack 2. 當(dāng)然stack可以用vector來(lái)替代。
class Solution {public: int evalRPN(vector<string>& tokens) { // vector<int> res; for(string s:tokens){ if(s=="+"||s=="-"||s=="*"||s=="/"){ int op2=res.back(); res.pop_back(); int op1=res.back(); res.pop_back(); if(s=="+") res.push_back(op1+op2); else if(s=="-") res.push_back(op1-op2); else if(s=="*") res.push_back(op1*op2); else if(s=="/"){ res.push_back(op1/op2); } }else res.push_back(stoi(s)); } return res.front(); }};
|
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注