leetcode 算法题415 (简单105) 字符串相加
- 题目介绍
给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。
- 注意
num1 和num2 的长度都小于 5100.
num1 和num2 都只包含数字 0-9.
num1 和num2 都不包含任何前导零。
你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。
- 解法一
/**
* @param {string} num1
* @param {string} num2
* @return {string}
*/
var addStrings = function(num1, num2) {
let i = 0, sum = '', flag = false, temp = 0;
if(num1.length > num2.length) {
temp = num1;
num1 = num2;
num2 = temp;
}
while(i < num1.length) {
temp = num1.charCodeAt(num1.length - 1 - i) + num2.charCodeAt(num2.length - ++i) + flag - 96;
console.log(temp)
flag = temp > 9;
sum = temp % 10 + sum;
}
while(i < num2.length) {
temp = num2.charCodeAt(num2.length - ++i) + flag - 48;
flag = temp > 9;
sum = temp % 10 + sum;
}
return flag ? '1' + sum : sum;
};
执行用时 : 308 ms, 在所有 JavaScript 提交中击败了5.31%的用户
内存消耗 : 45.3 MB, 在所有 JavaScript 提交中击败了5.07%的用户
- 解法二
/**
* @param {string} num1
* @param {string} num2
* @return {string}
*/
var addStrings = function(num1, num2) {
let i = 0, sum = '', flag = false, temp = 0, length = Math.max(num1.length, num2.length);
num1 = num1.padStart(length, '0');
num2 = num2.padStart(length, '0');
while (i < length) {
temp = num1.charCodeAt(num1.length - 1 - i) + num2.charCodeAt(num2.length - ++i) + flag - 96;
flag = temp > 9;
sum = temp % 10 + sum;
}
return flag ? '1' + sum : sum;
};
执行用时 : 100 ms, 在所有 JavaScript 提交中击败了74.93%的用户
内存消耗 : 36.1 MB, 在所有 JavaScript 提交中击败了84.81%的用户