[LeetCode] Evaluate Reverse Polish Notation, Solution
2013-12-07 14:20
537 查看
Evaluate the value of an arithmetic expression in Reverse Polish Notation.
Valid operators are
Some examples:
[Thoughts]
对于逆波兰式,一般都是用栈来处理,依次处理字符串,
如果是数值,则push到栈里面
如果是操作符,则从栈中pop出来两个元素,计算出值以后,再push到栈里面,
则最后栈里面剩下的元素即为所求。
[code]1: int evalRPN(vector<string> &tokens) { 2: stack<int> operand; 3: for(int i =0; i< tokens.size(); i++) 4: { 5: if ((tokens[i][0] == '-' && tokens[i].size()>1) //negative number 6: || (tokens[i][0] >= '0' && tokens[i][0] <= '9')) //positive number 7: { 8: operand.push(atoi(tokens[i].c_str())); 9: continue; 10: } 11: int op1 = operand.top(); 12: operand.pop(); 13: int op2 = operand.top(); 14: operand.pop(); 15: if(tokens[i] == "+") operand.push(op2+op1); 16: if(tokens[i] == "-") operand.push(op2-op1); 17: if(tokens[i] == "*") operand.push(op2*op1); 18: if(tokens[i] == "/") operand.push(op2/op1); 19: } 20: return operand.top(); 21: }
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
[Thoughts]
对于逆波兰式,一般都是用栈来处理,依次处理字符串,
如果是数值,则push到栈里面
如果是操作符,则从栈中pop出来两个元素,计算出值以后,再push到栈里面,
则最后栈里面剩下的元素即为所求。
[code]1: int evalRPN(vector<string> &tokens) { 2: stack<int> operand; 3: for(int i =0; i< tokens.size(); i++) 4: { 5: if ((tokens[i][0] == '-' && tokens[i].size()>1) //negative number 6: || (tokens[i][0] >= '0' && tokens[i][0] <= '9')) //positive number 7: { 8: operand.push(atoi(tokens[i].c_str())); 9: continue; 10: } 11: int op1 = operand.top(); 12: operand.pop(); 13: int op2 = operand.top(); 14: operand.pop(); 15: if(tokens[i] == "+") operand.push(op2+op1); 16: if(tokens[i] == "-") operand.push(op2-op1); 17: if(tokens[i] == "*") operand.push(op2*op1); 18: if(tokens[i] == "/") operand.push(op2/op1); 19: } 20: return operand.top(); 21: }
相关文章推荐
- [LeetCode] Evaluate Reverse Polish Notation, Solution
- [leetcode] Evaluate Reverse Polish Notation
- LeetCode-Evaluate Reverse Polish Notation[AC源码]
- leetcode-Evaluate Reverse Polish Notation
- [LeetCode] Evaluate Reverse Polish Notation stack 栈
- [LeetCode] Evaluate Reverse Polish Notation
- 【LeetCode练习题】Evaluate Reverse Polish Notation
- Leetcode 150. Evaluate Reverse Polish Notation (Medium) (cpp)
- Leetcode157: Evaluate Reverse Polish Notation
- Evaluate Reverse Polish Notation --leetcode
- Evaluate Reverse Polish Notation | leetcode
- 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
- 【LeetCode-面试算法经典-Java实现】【151-Evaluate Reverse Polish Notation(计算逆波兰式)】
- leetcode(150):Evaluate Reverse Polish Notation
- LeetCode: 150_Evaluate Reverse Polish Notation | 分析逆波兰式 | Medium
- [LeetCode]Evaluate Reverse Polish Notation