JAVA版本
思路:本题使用栈的方法来完成。本题相当于后缀表达式求值,也是与匹配相关,所以也是使用栈的思路。
class Solution {
public int evalRPN(String[] tokens) {
Stack<Integer> stack = new Stack<Integer>();
for (int i =0;i<tokens.length;i++){
if(tokens[i].equals("+")){
stack.push((stack.pop() + stack.pop()));
}else if (tokens[i].equals("-")){
stack.push((-stack.pop() + stack.pop()));
}else if(tokens[i].equals("*")){
stack.push((stack.pop() * stack.pop()));
}else if(tokens[i].equals("/")){
int chushu = stack.pop();
int beichushu = stack.pop();
stack.push(beichushu / chushu);
}else{
stack.push(Integer.valueOf(tokens[i]));
}
}
return stack.pop();
}
}
注意:
1.注意先出栈的是作为符号后面的值,相当于除数,减数,第二次弹出的数作为被除数、被加数之类。
2.String类型转化为Int类型的方法。
Integer.valueOf();
Integer.parseInt();
JAVA解力扣150题:后缀表达式求值栈方法
该问题通过使用栈来解决,模拟后缀表达式的计算过程。遍历tokens数组,遇到运算符时将栈顶两个元素进行相应运算并入栈,遇到数字则转换为Integer压入栈。最后栈顶元素即为结果。注意运算的优先级和类型转换。
1239

被折叠的 条评论
为什么被折叠?



