leetcode150:逆波兰表达式求值
package com.mxnet;
import java.util.Stack;
public class Solution150 {
public static void main(String[] args) {
}
/**
* 根据 逆波兰表示法,求表达式的值。
*
* 有效的算符包括+、-、*、/。每个运算对象可以是整数,也可以是另一个逆波兰表达式。
*
* 注意个整数之间的除法只保留整数部分。
*
* 可以保证给定的逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。
* @param tokens
* @return
* 思路
* 1. 使用栈结构保存所有数字
* 2. 依次遍历所有元素,如果是元素符,则从栈中弹出元素进行运算
* 3. 如果是数字则入栈
* 4. 最后计算的结构将保存在栈顶
*/
public int evalRPN(String[] tokens) {
int res = 0;
//定义栈保存数字
Stack<Integer> numStack = new Stack<>();
//遍历每个元素并进行判断执行
for (String token : tokens) {
if (token.equals("+")){
int num1 = numStack.pop();
int num2 = numStack.pop();
res = num1 + num2;
numStack.add(res);
}else if (token.equals("-")){
int num1 = numStack.pop();
int num2 = numStack.pop();
res = num2 - num1;
numStack.add(res);
}else if (token.equals("*")){
int num1 = numStack.pop();
int num2 = numStack.pop();
res = num1 * num2;
numStack.add(res);
}else if (token.equals("/")){
int num1 = numStack.pop();
int num2 = numStack.pop();
res = num2 / num1;
numStack.add(res);
}else {
numStack.add(Integer.parseInt(token));
}
}
return numStack.pop();
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理