力扣- 415. 字符串相加 🧶

简介: 力扣- 415. 字符串相加 🧶

前言

数据结构与算法属于开发人员的内功,不管前端技术怎么变,框架怎么更新,版本怎么迭代,它终究是不变的内容。 始终记得在参加字节青训营的时候,月影老师说过的一句话,不要问前端学不学算法。计算机学科的每一位都有必要了解算法,有写出高质量代码的潜意识

一、问题描述

给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和并同样以字符串形式返回。

你不能使用任何內建的用于处理大整数的库(比如 BigInteger), 也不能直接将输入的字符串转换为整数形式。

示例 1:

输入:num1 = "11", num2 = "123"
输出:"134"

示例 2:

输入:num1 = "456", num2 = "77"
输出:"533"

示例 3:

输入:num1 = "0", num2 = "0"
输出:"0"

提示:

  • 1 <= num1.length, num2.length <= 104
  • num1 和num2 都只包含数字 0-9
  • num1 和num2 都不包含任何前导零

二、思路讲解

采用双指针的方式来解决这道题。核心思路如下

  • 创建一个数组用于存储每一位的结果
  • 创建两个指针,分别指向两个值的最后一位,每次进行加法操作的时候,指针向前移动一位
  • 当指针越界的情况,进行补零操作
  • 最后存储的结果通过reverse的方式返回

三、AC代码

var addStrings = function(num1, num2) {
    let res = []
    let carry = 0 // 记录进位
    let i = num1.length - 1
    let j = num2.length - 1
    while(i >= 0 || j >= 0 || carry > 0){
        let n1 = i >= 0 ? num1[i] : 0 // 当整数长度不够的时候,缺少的位按照0计算 
        let n2 = j >= 0 ? num2[j] : 0 
        let sum = carry + (n1-0)+ (n2-0) // -0 是将字符转换为数字类型
        res.push(sum % 10) 
        console.log(res,sum)
        carry = Math.floor(sum / 10)
        i--
        j--
    }
    return res.reverse().join('')
};

后续

好了,本篇 力扣-字符串相加到这里就结束了,我是邵小白,一个在前端领域摸爬滚打的大三学生,欢迎👍评论。


相关文章
|
8天前
|
Go C++
【力扣】2696. 删除子串后的字符串最小长度(模拟 栈 C++ Go实现栈)
【2月更文挑战第18天】2696. 删除子串后的字符串最小长度(模拟 栈 C++ Go实现栈)
36 6
|
8天前
|
存储
力扣面试经典题之数组/字符串
力扣面试经典题之数组/字符串
27 0
|
8天前
|
存储 算法 安全
【刷题】 leetcode 面试题 01.06 字符串压缩
来看效果: 非常好!!!过啦!!!
29 5
【刷题】 leetcode 面试题 01.06 字符串压缩
|
8天前
leetcode代码记录(删除字符串中的所有相邻重复项
leetcode代码记录(删除字符串中的所有相邻重复项
14 0
|
8天前
|
算法
代码随想录算法训练营第五十五天 | LeetCode 583. 两个字符串的删除操作、72. 编辑距离、编辑距离总结
代码随想录算法训练营第五十五天 | LeetCode 583. 两个字符串的删除操作、72. 编辑距离、编辑距离总结
28 1
|
8天前
|
存储 编译器 Linux
标准库中的string类(中)+仅仅反转字母+字符串中的第一个唯一字符+字符串相加——“C++”“Leetcode每日一题”
标准库中的string类(中)+仅仅反转字母+字符串中的第一个唯一字符+字符串相加——“C++”“Leetcode每日一题”
|
8天前
|
机器学习/深度学习 索引
【力扣】387. 字符串中的第一个唯一字符
【力扣】387. 字符串中的第一个唯一字符
|
8天前
【力扣】28. 找出字符串中第一个匹配项的下标
【力扣】28. 找出字符串中第一个匹配项的下标
|
8天前
|
存储
leetcode2744. 最大字符串配对数目
leetcode2744. 最大字符串配对数目
18 0