『牛客|每日一题』逆波兰表达式

🍁每日推荐:基础算法无论在研究生面试还是求职面试都是十分重要的一环,这里推荐一款算法面试神器:牛客网-面试神器;算法题只有多刷勤刷才能保持思路与手感,大家赶紧行动起来吧(温馨提示:常见的面试问答题库也很nice哦)
在这里插入图片描述

如果文章有帮到你的话记得点赞👍+收藏💗支持一下哦

『牛客|每日一题』逆波兰表达式

1.每日一题

image-202207191****5925

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;
    }
}

image-202207191****3581

📚订阅专栏:『牛客刷题集锦』

🍁每日推荐:基础算法无论在研究生面试还是求职面试都是十分重要的一环,这里推荐一款算法面试神器:牛客网-面试神器;算法题只有多刷勤刷才能保持思路与手感,大家赶紧行动起来吧(温馨提示:常见的面试问答题库也很nice哦)
在这里插入图片描述

如果文章有帮到你的话记得点赞👍+收藏💗支持一下哦

全部评论
如有错误欢迎指正
点赞 回复 分享
发布于 2022-08-24 19:12 湖南

相关推荐

07-23 11:23
门头沟学院 Java
点赞 评论 收藏
分享
07-07 17:06
已编辑
深圳技术大学 golang
点赞 评论 收藏
分享
06-07 17:17
嘉兴学院 教师
心爱的idea:你孩
点赞 评论 收藏
分享
评论
4
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务