给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。
注意:
num1 和num2 的长度都小于 5100.
```num1 和num2 都只包含数字 0-9.```
```num1 和num2 都不包含任何前导零。```
你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。
思路:
1.把字符串以“,”分成数组;
2.将2个数值,再分为数组;
3.将两个数组倒置;
4.按顺序一一做和,超过10,下一位加1;
5.将result[0]==0,的数值去掉;
6.将result2转为字符串;
1.示例:
var str= "123";
var str2 ="234";
2.拆分为数组:
arr1 = ['1','2','3'];
arr2 =['2','3','4'];
3.反序
arr1 = ['3','2','1'];
arr2 =['4','3','2'];
4.数组对应项相加,满10前一位加1,删掉当前位的十位:
result = ['7','5','3'];
5.数组反序,转字符串,结果相加
result = '357'
实现代码:
var addStrings = function(num1, num2) {
/* 将数字转化为数组,并反序*/
let arr1 = num1.split("").reverse();
let arr2 = num2.split("").reverse();
/* 判断两个数组的长度 */
if (arr1.length >= arr2.length) {
var result = [];
result[0] = 0;
for (var i = 0; i <= arr1.length - 1; i++) {
if (arr2[i] == null) {
arr2[i] = 0;
}
/* 将结果相加,满10向前一位进1,并减去当前的值的十位 */
result[i] = result[i] + Number(arr1[i]) + Number(arr2[i]);
if (result[i] >= 10) {
result[i] = result[i] - 10;
result[i + 1] = 1;
} else {
result[i + 1] = 0;
}
}
} else {
var result = [];
result[0] = 0;
for (var i = 0; i <= arr2.length - 1; i++) {
if (arr1[i] == null) {
arr1[i] = 0;
}
result[i] = result[i] + Number(arr1[i]) + Number(arr2[i]);
if (result[i] >= 10) {
result[i] = result[i] - 10;
result[i + 1] = 1;
} else {
if (i + 1 <= arr2.length - 1) {
result[i + 1] = 0
}
}
}
}
result = result.reverse()
if (result[0] == 0) {
result.shift(0);
}
var result2 = '';
for (let i = 0; i < result.length; i++) {
result2 = result2 + result[i];
}
return result2;
};
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。