この解答例はChatGPTによって生成されています,正しいかは自己判断で。 皆の投稿からも解答例が見つかるかもしれませんよ。
BFE.devでのAI解答例 - JavaScript コーディング問題
62. BigIntの足し算を実装する
以下は、BigIntを使用せずに、整数文字列の足し算を実装した例です。
function add(num1, num2) { let result = ''; let carry = 0; const len1 = num1.length; const len2 = num2.length; const maxLen = Math.max(len1, len2); for (let i = 0; i < maxLen; i++) { const digit1 = parseInt(num1.charAt(len1 - 1 - i), 10) || 0; const digit2 = parseInt(num2.charAt(len2 - 1 - i), 10) || 0; const digitSum = digit1 + digit2 + carry; result = (digitSum % 10) + result; carry = Math.floor(digitSum / 10); } if (carry) { result = carry + result; } return result;}
この例では、引数 num1
と num2
を一桁ずつ加算していきます。最初にそれぞれの引数の長さを取得しています。そして、 for
ループで、一桁ずつ加算していきます。ここで、 charAt()
メソッドを使用して、文字列の後ろから一桁ずつ取得しています。もし、桁が足りない場合は、0で埋めます。
各桁の加算結果は digitSum
に代入され、10で割った余りがその桁の結果になります。数が繰り上がった場合は、 carry
変数に代入してください。最後に result
変数に繰り上がりを加算して、結果を返します。
このアルゴリズムの時間複雑度はO(n)です。