Given two non-negative integers, num1
and num2
represented as string, return the sum of num1
and num2
as a string.
You must solve the problem without using any built-in library for handling large integers (such as BigInteger
). You must also not convert the inputs to integers directly.
Example 1:
Input: num1 = "11", num2 = "123" Output: "134"
Example 2:
Input: num1 = "456", num2 = "77" Output: "533"
Example 3:
Input: num1 = "0", num2 = "0" Output: "0"
Constraints:
1 <= num1.length, num2.length <= 104
num1
andnum2
consist of only digits.num1
andnum2
don't have any leading zeros except for the zero itself.
给定两个字符串形式的非负整数 num1
和num2
,计算它们的和并同样以字符串形式返回。
你不能使用任何內建的用于处理大整数的库(比如 BigInteger
), 也不能直接将输入的字符串转换为整数形式。
示例 1:
输入:num1 = "11", num2 = "123" 输出:"134"
示例 2:
输入:num1 = "456", num2 = "77" 输出:"533"
示例 3:
输入:num1 = "0", num2 = "0" 输出:"0"
提示:
1 <= num1.length, num2.length <= 104
num1
和num2
都只包含数字0-9
num1
和num2
都不包含任何前导零
Language | Runtime | Memory | Submission Time |
---|---|---|---|
javascript | 108 ms | 36.1 MB | 2020/03/23 17:40 |
/**
* @param {string} num1
* @param {string} num2
* @return {string}
*/
var addStrings = function(num1, num2){
//取两个数字的最大长度
let maxLength = Math.max(num1.length, num2.length);
//用0去补齐长度
num1= num1.padStart(maxLength , 0);//"0009007199254740991"
num2= num2.padStart(maxLength , 0);//"1234567899999999999"
//定义加法过程中需要用到的变量
let t = 0; // 本位的和
let f = 0; //"进位"
let sum = "";
for(let i= maxLength-1; i>=0 ; i--) {
t = parseInt(num1[i]) + parseInt(num2[i]) + f;
f = Math.floor(t/10); // 进位
sum = t%10 + sum; // 本位字符串加上后面的字符串
}
// 最后如果还有进位
if(f){
sum = f + sum;
}
return sum;
}
No notes