/** * @param {string} num1 * @param {string} num2 * @return {string} */ functionaddStrings(num1, num2) { // 获取两个数的最大长度 let maxLen = Math.max(a.length, num2.length) // 位数不够的前面补0 num1 = num1.padStart(maxLen, '0') num2 = num2.padStart(maxLen, '0') let t = 0// 两位相加的和+进位 let f = 0// 进位 let sum = '' // 从后面开始相加 for (let i = maxLen - 1; i >= 0; i--) { // 每两位数相加的和 t = parseInt(num1[i]) + parseInt(num2[i]) + f // 如果大于等于10,则往前进一位 f = Math.floor(t / 10) // 一次累加 sum = t % 10 + sum } // 如果首位相加大于等于10,还要往前进一位 if (f == 1) { sum = '1' + sum } return sum }
上面的是网上的答案,但我自己用了 BigInt 试一下也是可以的,目前还不知道有什么弊端
1 2 3
functionaddStringsForBigInt(a, b) { return (BigInt(a) + BigInt(b)).toString() }
测试:
1 2 3 4 5
let a = "90071992547655740991"; let b = "1234567899999999999"; console.log(addStrings(a, b)) console.log(addStringsForBigInt(a, b)) console.log(addStrings(a, b) === addStringsForBigInt(a, b)) // true
var reverseWords = function (s) { let result = '' // 先用空格分割成数组,再去掉多余的空格,然后再颠倒顺序 let sliptArr = s.split(' ').filter(Boolean).reverse() sliptArr.forEach((element, index) => { result += element + (index === sliptArr.length - 1 ? '' : ' ') }) return result };
测试:
1 2
const num = "a good example" console.log(reverseWords(num))
/** * @param {number[]} nums * @return {number} */ var singleNumber = function (nums) { let result = null; for (let i = 0; i < nums.length; i++) { // 使用异或运算符 // a^a = 0,a^0=a,a^b^a=b result ^= nums[i] } return result };
/** * @param {number[][]} matrix * @return {void} Do not return anything, modify matrix in-place instead. */ var rotate = function (matrix) { // 先生成一个长度一样的二维数组 let len = matrix[0].length, result = Array.from({ length: len }, () => []) for (let i = matrix.length - 1; i >= 0; i--) { for (let j = len - 1; j >= 0; j--) { // 从尾部遍历插入 result[i].push(matrix[j][i]) } } return result };
/** * @param {character[]} s * @return {void} Do not return anything, modify s in-place instead. */ var reverseString = function (s) { // 使用双指针 let left = 0, right = s.length - 1 while (left < right) { [s[left], s[right]] = [s[right], s[left]] left++ right-- } }