zoukankan      html  css  js  c++  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"));



    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    一个可以用的Lua的Class函数
    写一个可以用的Lua打印Table的函数
    关于C#的接口的碎碎念
    C#中接口是值类型还是引用类型?
    Effective C++笔记_条款31将文件间的编译依存关系降至最低
    Effective C++ 阅读笔记_条款27 尽量少做转型动作
    Flask--开发全套
    python之元类
    Django之模板层
    go打开文件
  • 原文地址:https://www.cnblogs.com/blfshiye/p/4801577.html
Copyright © 2011-2022 走看看