LeetCode OJ --问题与解答 Evaluate Reverse Polish Notation
2014-02-16 20:00
453 查看
题目
Evaluate the value of an arithmetic expression in Reverse Polish Notation.
Valid operators are
Each operand may be an integer or another expression.
按照规则计算字符串
代码
public class Solution {
public int evalRPN(String[] tokens) {
if(tokens.length==0){
return 0;
}
Stack<Integer> record = new Stack<Integer>();
for(int i=0;i<tokens.length;i++){
String s = tokens[i];
if(s.equals("+")){
int temp=record.pop()+record.pop();
record.push(temp);
}
else if(s.equals("-")){
int temp=0-record.pop()+record.pop();
record.push(temp);
}
else if(s.equals("*")){
int temp=record.pop()*record.pop();
record.push(temp);
}
else if(s.equals("/")){
int temp1=record.pop();
int temp2 = record.pop();
record.push(temp2/temp1);
}
else {
record.push(Integer.parseInt(s));
}
}
return record.peek();
}
}
思考
1 让我很失望,我居然一遍就通过了。我只是把题目的意思按照逻辑写了出来,没有考虑出错的情况。
2 如果参加面试,起码会想到如下:
a 如果输入不合法怎么办?
b 如果除数为0怎么办?
c 如果加法,乘法,减法溢出怎么办?
Evaluate the value of an arithmetic expression in Reverse Polish Notation.
Valid operators are
+,
-,
*,
/.
Each operand may be an integer or another expression.
按照规则计算字符串
代码
public class Solution {
public int evalRPN(String[] tokens) {
if(tokens.length==0){
return 0;
}
Stack<Integer> record = new Stack<Integer>();
for(int i=0;i<tokens.length;i++){
String s = tokens[i];
if(s.equals("+")){
int temp=record.pop()+record.pop();
record.push(temp);
}
else if(s.equals("-")){
int temp=0-record.pop()+record.pop();
record.push(temp);
}
else if(s.equals("*")){
int temp=record.pop()*record.pop();
record.push(temp);
}
else if(s.equals("/")){
int temp1=record.pop();
int temp2 = record.pop();
record.push(temp2/temp1);
}
else {
record.push(Integer.parseInt(s));
}
}
return record.peek();
}
}
思考
1 让我很失望,我居然一遍就通过了。我只是把题目的意思按照逻辑写了出来,没有考虑出错的情况。
2 如果参加面试,起码会想到如下:
a 如果输入不合法怎么办?
b 如果除数为0怎么办?
c 如果加法,乘法,减法溢出怎么办?
相关文章推荐
- LeetCode OJ - Evaluate Reverse Polish Notation
- Evaluate Reverse Polish Notation问题及解法
- LeetCode OJ--Evaluate Reverse Polish Notation
- 【LeetCode OJ】Evaluate Reverse Polish Notation
- LeetCode OJ 之 Evaluate Reverse Polish Notation (求逆波兰表达式的值)
- LeetCode OJ:Evaluate Reverse Polish Notation(逆波兰表示法的计算器)
- python整除问题-leetcode-Evaluate Reverse Polish Notation
- [LeetCode OJ] Evaluate Reverse Polish Notation 解题报告
- 【LeetCode OJ】Evaluate Reverse Polish Notation
- Leetcode OJ: Evaluate Reverse Polish Notation
- Leetcode OJ : Evaluate Reverse Polish Notation Stack C++ solution
- LeetCode OJ:Evaluate Reverse Polish Notation
- Leetcode Evaluate Reverse Polish Notation
- Evaluate Reverse Polish Notation
- Evaluate Reverse Polish Notation ---Java
- leetcode Evaluate Reverse Polish Notation
- LeetCode-Evaluate Reverse Polish Notation (Python)
- 【LeetCode】Evaluate Reverse Polish Notation
- leetcode---Evaluate Reverse Polish Notation
- Evaluate Reverse Polish Notation(评估逆波特兰表示法)