当前位置: 首页 > news >正文

[150] 逆波兰表达式求值 js

题目描述:

给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式。

*

* 请你计算该表达式。返回一个表示表达式值的整数。
 

逆波兰表达式:

*

* 逆波兰表达式是一种后缀表达式,所谓后缀就是指算符写在后面。

*

*

* 平常使用的算式则是一种中缀表达式,如 ( 1 + 2 ) * ( 3 + 4 ) 。

* 该算式的逆波兰表达式写法为 ( ( 1 2 + ) ( 3 4 + ) * ) 。

*

*

* 逆波兰表达式主要有以下两个优点:

*

*

* 去掉括号后表达式无歧义,上式即便写成 1 2 + 3 4 + * 也可以依据次序计算出正确结果。

* 适合用栈操作运算:遇到数字则入栈;遇到算符则取出栈顶两个数字进行计算,并将结果压入栈中

解题思路:

遇到数字则入栈;遇到算符则取出栈顶两个数字进行计算,并将结果压入栈中

除法注意小于0向上取整,大于0向下取整

解法一:

function evalRPN(tokens) {
    let stask = [];
    for (let i = 0; i < tokens?.length; i++) {
        // 数字入栈
        if (/\d/.test(tokens[i])) {
            stask.push(+tokens[i]);
        } else {
            const secNum = stask.pop();
            const firNum = stask.pop();
            eval(
                `stask.push(${firNum} ${tokens[i]} ${secNum}  < 0 ? Math.ceil(${firNum} ${tokens[i]} ${secNum}) : Math.floor(${firNum} ${tokens[i]} ${secNum}))`,
            );
        }
    }
    return stask.pop();
};

用时:

// Your runtime beats 20.53 % of typescript submissions

// Your memory usage beats 5.27 % of typescript submissions (59.6 MB)

优化

除法的取整 实际上就是 Math.trunc 去掉小数部分

eval(`stask.push(Math.trunc(${firNum} ${tokens[i]} ${secNum}))`)

相关文章:

  • 【supervisor】unix:///tmp/supervisor.sock no such file
  • javascript设计模式-观察者和命令
  • 【spdk】isal加速库数据压缩测试
  • 【Java万花筒】解码Java网络通讯谜团:对比Apache HttpClient、OkHttp、Feign、RestTemplate、Retrofit
  • 一种解决常用存储设备无法被电脑识别的方法
  • PHP 调用 e 签宝接口签名指南
  • NAT44-ED features及节点图
  • python数字图像处理基础(九)——特征匹配
  • stm32 FOC 电机介绍
  • 【立创EDA-PCB设计基础】6.布线铺铜实战及细节详解
  • HCIA-HarmonyOS设备开发认证-序
  • 【GitHub项目推荐--不错的 Java 开源项目】【转载】
  • Transformer and Pretrain Language Models3-1
  • 使用trace工具分析Mysql如何选择索引
  • sky_take_out
  • Java使用Netty实现端口转发Http代理Sock5代理服务器
  • 基于若依的ruoyi-nbcio流程管理系统一种简单的动态表单模拟测试实现(四)
  • GBASE南大通用数据库GBase 8s常见问题讲堂 -- 字符集的设置
  • Java实现考研专业课程管理系统 JAVA+Vue+SpringBoot+MySQL
  • 面试百问之count(1) 和 count(*) 区别是什么?
  • 中方发布会:中美经贸高层会谈取得了实质性进展,达成了重要共识
  • 演员发文抵制代拍获粉丝支持,媒体:追星“正确姿势”不妨多来点
  • 当我们提起拉动消费时,应该拉动什么消费?
  • 中国海外发展:今年前4个月销售665.8亿元,花费305亿元拿地
  • 湖北宜昌:在青山绿水间解锁乡村振兴“密码”
  • “降息潮”延续!存款利率全面迈向“1时代”