import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param tokens string字符串一维数组
* @return int整型
*/
public int evalRPN (String[] tokens) {
// write code here
Stack<String>s = new Stack<>();
for(String tok:tokens){//简化for循环
if(!tok.equals("+")&&!tok.equals("-")&&!tok.equals("*")&&!tok.equals("/")){
s.push(tok);//如果是数字就直接压入栈中
}else{
int val1 = Integer.parseInt(s.pop());//提出一个数字
int val2 = Integer.parseInt(s.pop());//提出第二个数字
//parseInt()将字符型变量转化为数字型变量
//pop()是一个将栈顶数字弹出并进行返回的方法
if(tok.equals("+")){
s.push(String.valueOf(val1+val2));
}else if(tok.equals("-")){
s.push(String.valueOf(val2-val1));
}else if(tok.equals("*")){
s.push(String.valueOf(val1*val2));
}else{
s.push(String.valueOf(val2/val1));
}//进行运算
}
}
return Integer.parseInt(s.peek());//将最终结果转化为数字型变量
}
}
逆波兰表达式(Java)
最新推荐文章于 2024-07-21 22:27:18 发布