これは、Youdao Front End とのインタビューからのインタビューの質問でもあります。
ビッグ データの追加を処理する関数を作成します。いわゆるビッグ データとは、整数や長整数などの従来のデータ型の表現範囲を超えるデータを指します。実装言語は限定されません。
私はこれを js を使用して実装しました。私自身のアイデアについて話しましょう:
まず、この質問の最も重要な部分は、ビッグデータをどのように保存するかということです。保存するにはどのようなデータ型を使用する必要がありますか?最も簡単で実現可能な方法は String
2 です。データの保存に使用する型を決定すると、問題が明らかになります。まず、入力される 2 つの文字列の長さを決定し、最短の len ループを取得し、下位ビットから始めて対応するビットを追加し、キャリーの節約に注意します。短いデータが処理された後、キャリーは処理のために長い文字列の残りの部分に渡されます。
詳細な実装については、コードを参照してください。完全な例については、jsfiddle を参照してください。
var strAdd = function(srcA, srcB) {
var i, temp, tempA, tempB, len, lenA, lenB, carry = 0; 、
arrA = []、
arrB = []、
cloneArr = [];
arrA = srcA.split('');
arrB = srcB.split('') ;
arrA.reverse();
lenA = arrB.length;
len = lenB; ;
for (i = 0 ; i tempA = parseInt(arrA[i], 10); >temp = tempA tempB キャリー;
if (温度 > 9) {
キャリー = 1;
res.push( temp);
carry = 0 ;
}
cloneArr = lenA > arrB ?
for (; i < cloneArr.length; i ) >tempA = parseInt(cloneArr[i] , 10);
temp = tempA キャリー;
if (temp > 9) {
res.push(temp - 10); ;
} else {
res.push(temp);
carry = 0;
}
return (res.reverse()).join('');
};
以降。
追伸: 実は、この面接の質問は、元の面接の質問の試験官から、大きなデータを保存するために文字列を使用するように注意され、変更されました。