将中缀表达式转为后缀表达式,输入 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;
}
}
if(temarr.length==0){
temarr.push(arr[i])
}
}else{
temarr.push(arr[i])
}
}
if(temarr.length>0){
for(var k=temarr.length-1;k>=0;k--){
resarr.push(temarr[k])
}
}
console.log(resarr.join(''))
- 最后关于中缀表达式转后缀表达式的具体规则看我之前的文章:前缀中缀后缀