java 迭代加法_算法练习--多项式加法

JS 实现 多项式加法

Array.prototype.existKey = function(propVal){

var i = 0;

for(var i = 0;i < this.length; i++){

if(this[i].k == propVal){return i;}

}

return -1;

}

function polynAdd(a,b){

//1. parse out each exp

var strA = a[0] == '-' ? a : '+' + a;

var strB = b[0] == '-' ? b : '+' + b;

var aNb = strA + strB ;

console.log("aNb:"+aNb);

var op = aNb[0];

var s = "";

var arr = new Array();

for(var i = 1;i < aNb.length; i++){

if(i == aNb.length-1){arr.push(op+s+aNb[i]);break;}

if(aNb[i] == '+' || aNb[i]=='-'){

arr.push(op + s);

op = aNb[i];

s="";

}

else{

s+=aNb[i];

}

}

//2. parse out parameter & key for each exp & save into arr

var expArr = new Array();

for(var i = 0;i < arr.length; i++){

var index = arr[i].indexOf('X');

var key = arr[i].substr(index,arr[i].length);

var val = index == 1 ? arr[i][0]+"1" : arr[i].substr(0,index);

var existIndex = expArr.existKey(key);

if(existIndex != -1){

var r = eval(expArr[existIndex].v + val);

expArr[existIndex].v = r>0 ? '+' + r : r;

}

else{

expArr.push({k:key,v:val});

}

}

//3. output result

var resultStr = "";

for(var i = 0;i < expArr.length;i++){

var v = expArr[i].v == "+1" ? '+' : expArr[i].v == "-1" ? '-' : expArr[i].v;

resultStr +=v +expArr[i].k;

}

if(resultStr[0] == '+'){resultStr = resultStr.replace('+','');}

return resultStr;

}

//test

console.log(polynAdd("8X2+3X3-9X5","-4X5+17X2-99X8-15X5"));

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值