前端面接の二つのプログラミングテーマ
3288 ワード
/* : , , [6,7,11,9,12,14,13,15] [11,12,13,14,15]*/
function maxContinueArray(input){
if(!input&&input.length===0)return;
var tempArray=[],maxArray=[],tempInt,nextInt,index,size,flag=false;
var sort_array=input.sort(function(a,b){return a-b;});
for(index=0,size=sort_array.length;index<size;index++){
tempInt=Number(sort_array[index]);
nextInt=Number(sort_array[index+1]);// NaN
tempArray.push(tempInt);
if(flag=(tempInt+1)===nextInt?false:true){
if(Math.max(tempArray.length,maxArray.length)===tempArray.length){
maxArray=tempArray.slice(0);
}
tempArray=[];
}
}
return maxArray;
}
/* : , , */
function plus(input,input2){
if(input===undefined||input.length===0)return;
if(input2===undefined||input2.length===0)return;
var str1=String(input),str2=String(input2),result='';
result=str1.length>str2.length?calcu(str1,str2):calcu(str2,str1);
function calcu(m,s){
var a,b,c,d=0,ret=[],i=0,sSize=s.length;
for(var index=m.length-1;index>=0;index--){
++i;
a=m[index];
b=s[sSize-i]||0;
c=Number(a)+Number(b)+d;
if(c<10){
ret.push(c);
d=0;
}else{
ret.push((c-10));
d=1;
}
}
return ret.reverse().join('');
}
return result;
}
今日は面接に行きました.結果は問題が一つになりました.二つのプログラミング問題を直接ペンで書くのは難しいです.1つの時計を書きました.結果は家に帰ってfirefoxでテストしました.全部出力ミスを出しました.問題は余分な判断を加えました.出力は永遠に最初の連続配列になります.題目二、根本から見る必要はないです.進位の時、10を減らすことを忘れました.また、計算した結果、逆順出力を忘れました.oh、my god、学芸が優れていません.
インターネットを利用して人の1篇の大きい整数を見て足して、テストして、私の書いたのと同じに丈夫ではありません.
function add(a, b){
var SPLITE_LENGTH = 3;
var aL = String(a), bL = String(b);
var resout = '', c = 0;
while(aL != 0 || bL != 0){
var aR = aL.slice(-SPLITE_LENGTH), bR = bL.slice(-SPLITE_LENGTH);
var t = String(parseInt(aR) + parseInt(bR) + c);
resout = t.slice(-SPLITE_LENGTH) + resout; //
c = parseInt(t.slice(0, -SPLITE_LENGTH)||'0');
aL = aL.slice(0, -SPLITE_LENGTH)||'0';
bL = bL.slice(0, -SPLITE_LENGTH)||'0';
console.log(resout, aL, bL, c);
}
if(c){
resout = String(c) + resout;
}
return resout;
}
テストケース:1.大正整数
プラス(12315151512315150、481554610815460)
出力:「17166087617130610」
add(12315151512315150、481554610815460)
出力:「17166087617130610」
2.負の数
プラス(-12315151512315150、481554610815460)
出力:「NaN 17166087617130610」
add(-1231515151512315150,481554610815460)
出力:「NaN 17166087617130610」
3.出力小数:
プラス(-123151515151231.5150、481554610815460)
出力:「NaN 171716608761713 NaN 976」
add(-123151515151231.51150、481554610815460)
出力:「NaN 17166087616846976」:
境界は完全に足りないことを考慮して、おや、bigNumber.jsのこの開源プロジェクトを参考にしてどのように実現したのですか?コードの中でマイナスと小数処理の分岐を体現するべきです.