『牛客|每日一题』逆波兰表达式
如果文章有帮到你的话记得点赞👍+收藏💗支持一下哦
『牛客|每日一题』逆波兰表达式
1.每日一题
2.解题思路
2.1思路分析
计算逆波兰表达式:遇到数字就压栈,遇到运算符就弹出栈顶两个数进行计算,然后把计算结果压入栈中,直到栈中只剩下最后一个数,就是整个逆波兰表达式的计算结果。
- step 1:引入辅助栈stk,遍历字符串,每次遇到数字就入栈,所以栈可以定义为Integer类型
- step 2:当遇到
"+","-","*","/"
字符串的时候,则弹出栈顶两个数,进行相应的运算(先弹出来的是被操作数,后弹出来的是操作数;如减法时,是先弹出来的是被减数,后弹出来的是减数) - step 3:将计算结果(Integer类型)存入栈中
- step 4:循环匹配字符串,直到所有字符串处理完成
- step 5:栈中剩下的最后一个元素就是计算结果
2.2核心代码
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * @param tokens string字符串一维数组 * @return int整型 */ public int evalRPN (String[] tokens) { // write code here Stack<Integer>stk=new Stack<>(); for(int i=0;i<tokens.length;++i){ String s=tokens[i]; if(s.equals("+")||s.equals("-")||s.equals("*")||s.equals("/")){ stk.push(cal(stk.pop(),s,stk.pop())); }else{ stk.push(Integer.parseInt(s)); } } return stk.pop(); } public Integer cal(Integer b,String s,Integer a){ switch(s){ case "+":return a+b; case "-":return a-b; case "*":return a*b; case "/":return a/b; } return -1; } }
📚订阅专栏:『牛客刷题集锦』
如果文章有帮到你的话记得点赞👍+收藏💗支持一下哦