この解答例は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)です。