leetcode 算法题415 (简单105) 字符串相加

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%的用户

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值