From 9c4e02544987a3b96252f7e2c62cebd530375283 Mon Sep 17 00:00:00 2001 From: Leopen <790480953@qq.com> Date: Sat, 20 Aug 2022 15:40:50 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=E5=AE=9E=E7=8E=B0=E4=BA=86?= =?UTF-8?q?=E4=B8=A4=E4=B8=AA=E5=A4=A7=E6=95=B0=E7=9B=B8=E5=8A=A0=E5=87=BD?= =?UTF-8?q?=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/add.js | 29 ++++++++++++++++++++++++++--- test/test.spec.js | 8 +++++--- 2 files changed, 31 insertions(+), 6 deletions(-) diff --git a/lib/add.js b/lib/add.js index 1714b95..b69edd8 100644 --- a/lib/add.js +++ b/lib/add.js @@ -1,5 +1,28 @@ -function add() { - // 实现该函数 +function add(firstNumber, secondNumber) { + const [shortNumber, longNumber] = + firstNumber.length < secondNumber.length + ? [firstNumber, secondNumber] + : [secondNumber, firstNumber]; + + let result = ''; + let lastSumLargeThanTen = false; + + for (let i = shortNumber.length - 1; i >= 0; i--) { + const sum = + parseInt(shortNumber.substring(i, i + 1)) + + parseInt(longNumber.substring(i, i + 1)); + + if (lastSumLargeThanTen) { + result = sum + parseInt(result.substring(0, 1)) + result.substring(1); + } else { + result = sum + result; + } + lastSumLargeThanTen = sum > 10; + } + + return ( + longNumber.substring(0, longNumber.length - shortNumber.length) + result + ); } -module.exports = add \ No newline at end of file +module.exports = add; diff --git a/test/test.spec.js b/test/test.spec.js index 935b70e..a539599 100644 --- a/test/test.spec.js +++ b/test/test.spec.js @@ -4,8 +4,10 @@ describe('大数相加add方法', function () { test('字符串"42329"加上字符串"21532"等于"63861"', function () { expect(add('42329', '21532')).toBe('63861') }) - + test('"843529812342341234"加上"236124361425345435"等于"1079654173767686669"', function () { - expect(add('843529812342341234', '236124361425345435')).toBe('1079654173767686669') + expect(add('843529812342341234', '236124361425345435')).toBe( + '1079654173767686669' + ) }) -}) \ No newline at end of file +}) From 67d9b953d367627c1773ccb254d94cb4d1d8cc75 Mon Sep 17 00:00:00 2001 From: Leopen <790480953@qq.com> Date: Sat, 20 Aug 2022 15:43:42 +0800 Subject: [PATCH 2/2] =?UTF-8?q?feat:=20=E4=BD=BF=E7=94=A8=20at=20=E6=9B=BF?= =?UTF-8?q?=E4=BB=A3=20substring=20=E5=AE=9E=E7=8E=B0=E5=A4=A7=E6=95=B0?= =?UTF-8?q?=E7=9B=B8=E5=8A=A0=EF=BC=8Cnode=20=E7=89=88=E6=9C=AC=E8=A6=81?= =?UTF-8?q?=E6=B1=82=2016.6.0=20=E5=8F=8A=E4=BB=A5=E4=B8=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/add-v16.js | 26 ++++++++++++++++++++++++++ test/test.spec.js | 1 + 2 files changed, 27 insertions(+) create mode 100644 lib/add-v16.js diff --git a/lib/add-v16.js b/lib/add-v16.js new file mode 100644 index 0000000..40308b4 --- /dev/null +++ b/lib/add-v16.js @@ -0,0 +1,26 @@ +function add(firstNumber, secondNumber) { + const [shortNumber, longNumber] = + firstNumber.length < secondNumber.length + ? [firstNumber, secondNumber] + : [secondNumber, firstNumber]; + + let result = ''; + let lastSumLargeThanTen = false; + + for (let i = -1; i >= -shortNumber.length; i--) { + const sum = parseInt(shortNumber.at(i)) + parseInt(longNumber.at(i)); + + if (lastSumLargeThanTen) { + result = sum + parseInt(result.at(0)) + result.substring(1); + } else { + result = sum + result; + } + lastSumLargeThanTen = sum > 10; + } + + return ( + longNumber.substring(0, longNumber.length - shortNumber.length) + result + ); +} + +module.exports = add; diff --git a/test/test.spec.js b/test/test.spec.js index a539599..ccdf10f 100644 --- a/test/test.spec.js +++ b/test/test.spec.js @@ -1,4 +1,5 @@ var add = require('../lib/add') +// var add = require('../lib/add-v16'); describe('大数相加add方法', function () { test('字符串"42329"加上字符串"21532"等于"63861"', function () {