题解 | #逆波兰表达式求值#
逆波兰表达式求值
https://www.nowcoder.com/practice/885c1db3e39040cbae5cdf59fb0e9382
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param tokens string字符串一维数组
* @return int整型
*/
public int evalRPN (String[] tokens) {
// write code here
LinkedList<Integer> stack = new LinkedList<>();
for(int i = 0; i < tokens.length; i++) {
if(isOprater(tokens[i])){
int num2 = stack.pop();
int num1 = stack.pop();
int result = op(num1, tokens[i].charAt(0), num2);
stack.push(result);
}else{
stack.push(Integer.parseInt(tokens[i]));
}
}
return stack.pop();
}
private boolean isOprater(String s){
return "+".equals(s) || "-".equals(s) || "*".equals(s) || "/".equals(s);
}
private int op(int num1, char oprater, int num2) {
switch (oprater) {
case '+':
return num1 + num2;
case '-':
return num1 - num2;
case '*':
return num1 * num2;
case '/':
return num1 / num2;
default:
return 0;
}
}
}
查看5道真题和解析