前端基础笔记——中缀表达式转后缀(简易版无括号,校招真题)

将中缀表达式转为后缀表达式,输入 a+b*c/d-a+f/b 输出 abc*d/+a-fb/+
要求:语言不限;输入输出均为单个字符串;操作数用单个小写字母表示,操作符只需支持 +-*/,按照四则运算顺序确定优先级,不包含括号
* 输入 a+b*c/d-a+f/b
* 输出 abc*d/+a-fb/+
var arr=readline().split('');
// 设置权重对象
var obj={'+':1,'-':1,'*':2,'/':2};
// 设置两个栈
var resarr=[];
var temarr=[];
for(var i=0;i<arr.length;i++){
    var len=temarr.length;
    if(!obj[arr[i]]){
        resarr.push(arr[i]);
        continue;
    }else if(temarr[0]){
        for(var m=len-1;m>=0;m--){
            if(obj[arr[i]]<=obj[temarr[m]]){
                resarr.push(temarr[m]);
                temarr.pop();
            }else{
                temarr.push(arr[i])
                break;
            }
        }
        //.此时还需要判断是否temarr不等于[]
        if(temarr.length==0){
            temarr.push(arr[i])
        }
    }else{
        temarr.push(arr[i])
    }
}
// 最后还需要清空temarr
if(temarr.length>0){
    for(var k=temarr.length-1;k>=0;k--){
        resarr.push(temarr[k])
    }
}
console.log(resarr.join(''))
  • 最后关于中缀表达式转后缀表达式的具体规则看我之前的文章:前缀中缀后缀
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值