[LeetCode] Evaluate Reverse Polish Notation, Solution
2016-01-12 11:12
513 查看
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: }
相关文章推荐
- Lua脚本语言简明入门教程
- Lua & C 交互 3 c/c++调用lua
- Lua & C 交互 2 尝试操作lua栈
- Lua & C 交互 1 环境搭配
- luci 打印函数封装
- Lua 与C 交换 第一篇
- Lua中的模块与module函数详解
- Lua模块和模块载入浅析
- Lua协同程序coroutine详解
- lua里面求int数组的union,diff,inter,distinct 方法实现
- Lua函数闭包解析
- lua学习笔记
- lua -- encode and decode
- Lua学习笔记6:C++和Lua的相互调用
- Lua学习笔记9:多文件
- lua内存泄露
- lua string
- 在Lua中调用c++函数
- 绑定自定义类到Runtime(Lua-binding)
- Lua小游戏别撞车——添加广告及上线