LeetCode——字符串相加(JS实现)

简介: LeetCode——字符串相加(JS实现)

题目描述

image.png

解题思路

由于本题不让使用BigInt等将字符串转换为整数形式,所以我们必须考虑使用其他的方法。所以本题考虑采用双指针的方法。

  1. 使用两个指针分别指向数字字符串的末尾位置。
  2. 使用变量carry记录进位。
  3. 当两个记录下标的位置大于等于0,或者进位不等于零的时候都进入循环。
  4. 在循环中当使用charAt这个API获取字符串对应下标的字符,两个字符相减会变成number类型。
  5. 每次循环结束都将两个指针左移一位。

解题代码

var addStrings = function(num1, num2) {
    let l = num1.length - 1;
    let r = num2.length - 1;
    let carry = 0;
    let ans = [];
    while (l >= 0 || r >= 0 || carry !== 0) {
        let c1 = l >= 0 ? num1.charAt(l) - '0' : 0;
        let c2 = r >= 0 ? num2.charAt(r) - '0' : 0;
        let sum = c1 + c2 +  carry;
        ans.push(sum % 10);
        carry = Math.floor(sum / 10);
        l--;
        r--;
    }
    return ans.reverse().join('')
};
复制代码

题目反思

  1. 两个数字字符相减会转换为number类型。
  2. 可以使用  字符串.charAt(index) 来获取字符串指定位置的字符。
相关文章
|
2月前
|
JavaScript 前端开发
JS几种拼接字符串的方法
JS几种拼接字符串的方法
53 1
|
1月前
|
JavaScript 前端开发 数据处理
模板字符串和普通字符串在浏览器和 Node.js 中的性能表现是否一致?
综上所述,模板字符串和普通字符串在浏览器和 Node.js 中的性能表现既有相似之处,也有不同之处。在实际应用中,需要根据具体的场景和性能需求来选择使用哪种字符串处理方式,以达到最佳的性能和开发效率。
|
28天前
|
JavaScript 前端开发 索引
JavaScript学习第二章--字符串
本文介绍了JavaScript中的字符串处理,包括普通字符串和模板字符串的使用方法及常见字符串操作方法如`charAt`、`concat`、`endsWith`等,适合前端学习者参考。作者是一位热爱前端技术的大一学生,专注于分享实用的编程技巧。
23 2
|
2月前
|
JavaScript
力扣3333.找到初始输入字符串Ⅱ
【10月更文挑战第9天】力扣3333.找到初始输入字符串Ⅱ
36 1
|
2月前
|
C++
Leetcode第43题(字符串相乘)
本篇介绍了一种用C++实现的字符串表示的非负整数相乘的方法,通过逆向编号字符串,将乘法运算转化为二维数组的累加过程,最后处理进位并转换为字符串结果,解决了两个大数相乘的问题。
25 9
|
2月前
|
存储 JavaScript 前端开发
JavaScript 字符串(String) 对象
JavaScript 字符串(String) 对象
47 3
|
3月前
|
JavaScript 前端开发
如何在JavaScript中替换字符串:一篇详细指南
如何在JavaScript中替换字符串:一篇详细指南
|
2月前
|
算法 C++
Leetcode第八题(字符串转换整数(atoi))
这篇文章介绍了LeetCode上第8题“字符串转换整数(atoi)”的解题思路和C++的实现方法,包括处理前导空格、正负号、连续数字字符以及整数溢出的情况。
20 0
|
2月前
【LeetCode 22】459.重复的子字符串
【LeetCode 22】459.重复的子字符串
30 0
|
2月前
【LeetCode 20】151.反转字符串里的单词
【LeetCode 20】151.反转字符串里的单词
20 0