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 如果加法,乘法,减法溢出怎么办?