この解答例は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;
}

この例では、引数 num1num2 を一桁ずつ加算していきます。最初にそれぞれの引数の長さを取得しています。そして、 for ループで、一桁ずつ加算していきます。ここで、 charAt() メソッドを使用して、文字列の後ろから一桁ずつ取得しています。もし、桁が足りない場合は、0で埋めます。

各桁の加算結果は digitSum に代入され、10で割った余りがその桁の結果になります。数が繰り上がった場合は、 carry 変数に代入してください。最後に result 変数に繰り上がりを加算して、結果を返します。

このアルゴリズムの時間複雑度はO(n)です。