150. Evaluate Reverse Polish Notation
来源:互联网 发布:淘宝网情侣装dongji 编辑:程序博客网 时间:2024/06/05 16:26
- Evaluate Reverse Polish Notation
- Description
- Implementation
150. Evaluate Reverse Polish Notation
Description
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
Implementation
This problem can be tackled by stack operation. Utilize stack to store operands and when meeting with operation, pop the operands and push the result back into stack. In the end, the top element of the stack is the result we needed.
Be careful about minus like “-1”.
class Solution {public: int evalRPN(vector<string>& tokens) { stack<int> operand; int size = tokens.size(); for(int idx = 0; idx < size; idx++) { int str_len = tokens[idx].size(); if(str_len == 1 && (tokens[idx] == "+" || tokens[idx] == "-" || tokens[idx] == "*" || tokens[idx] == "/")) { int op1 = operand.top(); operand.pop(); int op2 = operand.top(); operand.pop(); switch(tokens[idx][0]){ case '+': operand.push(op1+op2); break; case '-': operand.push(op2-op1); break; case '*': operand.push(op2*op1); break; case '/': operand.push(op2/op1); break; default: break; } } else { int tmp = 0; int sign = 1; if(tokens[idx][0] == '-') sign = -1; else tmp = tokens[idx][0] - '0'; for(int idx2 = 1; idx2 < str_len; idx2++) tmp = tmp*10 + tokens[idx][idx2] - '0'; operand.push(tmp*sign); } } if(operand.size() > 0) return operand.top(); else return 0; }};
阅读全文
0 0
- 150. Evaluate Reverse Polish Notation
- 150. Evaluate Reverse Polish Notation
- 150. Evaluate Reverse Polish Notation
- 150. Evaluate Reverse Polish Notation
- 150. Evaluate Reverse Polish Notation
- 150. Evaluate Reverse Polish Notation
- 150. Evaluate Reverse Polish Notation
- 150. Evaluate Reverse Polish Notation
- 150. Evaluate Reverse Polish Notation
- 150. Evaluate Reverse Polish Notation
- 150. Evaluate Reverse Polish Notation
- 150. Evaluate Reverse Polish Notation
- 150. Evaluate Reverse Polish Notation
- 150. Evaluate Reverse Polish Notation
- 150. Evaluate Reverse Polish Notation
- 150. Evaluate Reverse Polish Notation
- 150. Evaluate Reverse Polish Notation
- 150. Evaluate Reverse Polish Notation
- 【读书笔记】机器学习实战 第7章 基于单层决策树的adaboost
- 将字符串转换成整数[Java]
- JavaWeb--使用Websocket实现在线聊天功能
- IOS警告as the name of the previous parameter rather than as part of the selector
- Struts(五)json解析
- 150. Evaluate Reverse Polish Notation
- 光流基本介绍
- 使用PHP函数写验证码截取一些字符串
- python环境搭建
- 关于配置SmartConfig导致ESP8266频繁硬件复位的问题
- 初见Android中的布局
- 数据库基础操作语句
- IP报头检验和算法的python实现
- 使用webdriver+urllib下载哈哈网所有图片