Evaluate Reverse Polish Notation
Total Accepted: 11741 Total Submissions: 60315 My Submissions
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:
栈求解加减乘除。
遇到数字入栈,遇到计算符号,弹出栈顶两个元素,进行计算,计算完毕入栈。
注意计算先后顺序。最后栈顶元素就是结果。
Total Accepted: 11741 Total Submissions: 60315 My Submissions
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【解题思路】
栈求解加减乘除。
遇到数字入栈,遇到计算符号,弹出栈顶两个元素,进行计算,计算完毕入栈。
注意计算先后顺序。最后栈顶元素就是结果。
Java AC
public class Solution {
public int evalRPN(String[] tokens) {
Stack<Integer> stack = new Stack<Integer>();
int len = tokens.length;
for(int i = 0; i < len; i++){
if(isDigit(tokens[i])){
stack.push(Integer.parseInt(tokens[i]));
}else{
int num2 = stack.pop();
int num1 = stack.pop();
int num = 0;
if(tokens[i].equals("+")){
num = num1 + num2;
}else if(tokens[i].equals("-")){
num = num1 - num2;
}else if(tokens[i].equals("*")){
num = num1 * num2;
}else{
num = num1 / num2;
}
stack.push(num);
}
}
return stack.peek();
}
private boolean isDigit(String token){
if(token.equals("+") || token.equals("-")
|| token.equals("*") || token.equals("/")){
return false;
}
return true;
}
}