Evaluate Reverse Polish Notation
2014-02-24 22:26
232 查看
题目描述:
EvaluatethevalueofanarithmeticexpressioninReversePolishNotation.
Validoperatorsare
Someexamples:
Evaluatethevalueofanarithmeticexpressionin
Validoperatorsare
+,
-,
*,
/.Eachoperandmaybeanintegeroranotherexpression.
Someexamples:
["2","1","+","3","*"]->((2+1)*3)->9 ["4","13","5","/","+"]->(4+(13/5))->6 分析:这一题就是中缀算术表达式求值运算。最经典的方法就是利用栈来解决这个问题。我们使用一个“辅助栈”来保存遍历到的操作数,当遇到操作符的时候,就从栈中pop出两个元素,进行计算,然后将结果push至“辅助栈”中,然后继续遍历。同时注意边界条件的判断,当这个表达式只有一个时输出是什么,当除法的被除数为0时,是怎么样的情况,都需要进行判断,然而这道题编译的时候没有考虑被除数为0的情况,但是面试的时候一定要注意边界条件的判断,这是面试官考察你考虑问题完不完全。
classSolution{ public: intevalRPN(vector<string>&tokens){ if(tokens.size()==1) { vector<string>::iteratoriter=tokens.begin(); returnatoi(iter->c_str()); } stack<int>numbers; vector<string>::iteratoriter=tokens.begin(); intnum1=0,num2=0; for(;iter!=tokens.end();++iter) { if(*iter=="+"||*iter=="-"||*iter=="/"||*iter=="*") { num1=numbers.top(); numbers.pop(); num2=numbers.top(); numbers.pop(); if(*iter=="+") numbers.push(num2+num1); elseif(*iter=="-") numbers.push(num2-num1); elseif(*iter=="*") numbers.push(num2*num1); elseif(*iter=="/") { numbers.push(num2/num1); } } else numbers.push(atoi(iter->c_str())); } returnnumbers.top(); } };
Python语言实现,道理都是一样的:
classSolution: #@paramtokens,alistofstring #@returnaninteger defevalRPN(self,tokens): numbers=[] fornumberintokens: ifnumbernotin["+","-","*","/"]: numbers.append(int(number)) elifnumberin["+","-","*","/"]: num1=numbers.pop() num2=numbers.pop() ifnumber=="+": numbers.append(num1+num2) elifnumber=="-": numbers.append(num2-num1) elifnumber=="*": numbers.append(num2*num1) elifnumber=="/": numbers.append(int(num2/float(num1))) returnint(numbers.pop())
相关文章推荐
- Leetcode: Evaluate Reverse Polish Notation
- Evaluate Reverse Polish Notation
- [LeetCode] Evaluate Reverse Polish Notation
- Evaluate Reverse Polish Notation
- leetcode之Evaluate Reverse Polish Notation
- 【LeetCode OJ】Evaluate Reverse Polish Notation
- Evaluate Reverse Polish Notation
- [LeetCode]Evaluate Reverse Polish Notation, 解题报告
- Evaluate Reverse Polish Notation
- 【LeetCode】Evaluate Reverse Polish Notation
- leetcode_Evaluate Reverse Polish Notation
- [LeetCode]Evaluate Reverse Polish Notation
- LeetCode::Evaluate Reverse Polish Notation
- leetcode Evaluate Reverse Polish Notation
- Evaluate Reverse Polish Notation
- leetcode 刷题之路 2 Evaluate Reverse Polish Notation
- Evaluate Reverse Polish Notation
- LeetCode 150. Evaluate Reverse Polish Notation
- LeetCode---2.Evaluate Reverse Polish Notation
- Leetcode--Evaluate Reverse Polish Notation