js string sum All In One
js string sum All In One
big int number add
字符串相加 / 大数相加
"use strict";
/**
*
* @author xgqfrms
* @license MIT
* @copyright xgqfrms
* @created 2022-03-17
* @modified
*
* @description 2. Add Two Numbers
* @description
* @difficulty Medium
* @complexity O(n)
* @time O(n)
* @augments
* @example
* @link https://leetcode.com/problems/add-two-numbers/
* @link https://leetcode-cn.com/problems/add-two-numbers/
* @solutions
*
* @best_solutions
*
*/
const log = console.log;
function sumString(a1, a2) {
const s1 = a1.reverse();
const s2 = a2.reverse();
let result = [];
let upNum = 0;
// log('s1', s1);
// log('s2', s2);
if(s1.length >= s2.length) {
result = s1;
for (let i = 0; i < s1.length; i++) {
let a = s1[s1.length - i - 1];
let b = s2[s2.length - i - 1] || 0;
// log('\na, b =', a, b, (a + b));
result[s1.length - i - 1] = (a + b + upNum) % 10;
// log('result =', i, JSON.stringify(result));
if((a + b + upNum) >= 10) {
upNum = 1;
} else {
upNum = 0;
}
// log('upNum =', upNum);
}
} else {
result = s2;
for (let i = 0; i < s2.length; i++) {
let a = s2[s2.length - i - 1];
let b = s1[s1.length - i - 1] || 0;
result[s2.length - i - 1] = (a + b + upNum) % 10;
if((a + b + upNum) >= 10) {
upNum = 1;
} else {
upNum = 0;
}
}
}
if(upNum) {
result.unshift(upNum);
}
log('result', result.reverse());
return result.reverse();
}
sumString([9,9,9,9,9,9,9], [9,9,9,9]);
// [8,9,9,9,0,0,0,1]
// sumString([2,4,3], [5,6,4]);
// [7,0,8]
// Explanation: 342 + 465 = 807.
// 字符串相加 / 大数相加
const addStrings = function(num1, num2) {
let res = '';
let temp = 0;
const arr1 = num1.split('');
const arr2 = num2.split('');
while (arr1.length || arr2.length || temp) {
// `~~` double bitwise not 双非位运算, 字符串转换成整数
temp += ~~arr1.pop() + ~~arr2.pop();
// 字符串相加,要注意先后顺序
res = (temp % 10) + res;
// 进位
temp = temp > 9 ? 1 : 0;
}
// console.log('res =', res, typeof res);
return res === "0" ? res : res.replace(/^0+/, '');
}
~~
double bitwise not 双非位运算, 字符串转换成整数
let s = `3`;
// '3'
~s;
// -4
~~s;
// 3
+s;
// 3
https://leetcode.com/problems/add-two-numbers/
solution
/**
* Definition for singly-linked list.
* function ListNode(val) {
* this.val = val;
* this.next = null;
* }
*/
/**
* @param {ListNode} l1
* @param {ListNode} l2
* @return {ListNode}
*/
const log = console.log;
var addTwoNumbers = function(l1, l2) {
const log = console.log;
log(`l1`, l1)
log(`l2`, l2)
var carry = 0;
var sum = 0;
var head = new ListNode(0);
var now = head;
var a = l1;
var b = l2;
while (a !== null || b !== null) {
sum = (a ? a.val : 0) + (b ? b.val : 0) + carry;
carry = Math.floor(sum / 10);
now.next = new ListNode(sum % 10);
now = now.next;
a = a ? a.next : null;
b = b ? b.next : null;
}
if (carry) now.next = new ListNode(carry);
log(`head`, head)
return head.next;
};
Array.at
const arr= [1, 2, 3];
const i = 0;
console.log(arr.at(i));
// 1
const j = -1;
console.log(ar.at(j));
// 3
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/at
refs
©xgqfrms 2012-2020
www.cnblogs.com/xgqfrms 发布文章使用:只允许注册用户才可以访问!
原创文章,版权所有©️xgqfrms, 禁止转载 🈲️,侵权必究⚠️!
本文首发于博客园,作者:xgqfrms,原文链接:https://www.cnblogs.com/xgqfrms/p/16020051.html
未经授权禁止转载,违者必究!