运算符仅包含"+","-","“和”/",被操作数可能是整数或其他表达式
例如:
[“2”, “1”, “+”, “3”, ""] -> ((2 + 1) * 3) -> 9↵ [“4”, “13”, “5”, “/”, “+”] -> (4 + (13 / 5)) -> 6
思路:
遍历字符串数组,遇到数字就存进栈里,遇到符号就往外弹两个数,将计算结果存进栈。
import java.util.Stack;
public class Solution {
public int evalRPN(String[] tokens) {
Stack stack = new Stack();
int a = 0;
int b = 0;
int result = 0;
if(tokens.length == 1) {
result = Integer.valueOf(tokens[0]);
}
for (int i = 0; i < tokens.length; i++) {
if (tokens[i].equals("+")) {
a = (int) stack.pop();
b = (int) stack.pop();
result = a + b;
stack.push(result);
} else if (tokens[i].equals("-")) {
a = (int) stack.pop();
b = (int) stack.pop();
result = b - a;
stack.push(result);
} else if (tokens[i].equals("*")) {
a = (int) stack.pop();
b = (int) stack.pop();
result = a * b;
stack.push(result);
} else if (tokens[i].equals("/")) {
a = (int) stack.pop();
b = (int) stack.pop();
result = b / a;
stack.push(result);
} else {
stack.push(Integer.valueOf(tokens[i]));
}
}
return result;
}
}