LC 415字符串简单第 44 / 95 题

字符串相加

Add Strings

模拟进位
本机进度仅保存在当前浏览器

题目描述

给定两个以字符串形式表示的非负整数 num1 和 num2(不能直接转整数或用内置大数库),返回它们相加结果的字符串形式。

示例:num1 = "456",num2 = "77",输出 "533"。

解题思路

  1. 模拟竖式加法:从末位开始对齐,逐位相加并维护进位。
  2. 循环条件是两串未耗尽或进位非零——"或进位"是最容易漏的分支。
  3. 结果逐位追加后整体反转即答案。

参考实现

查看参考实现Python · 建议先自行作答
def addStrings(num1, num2):
    # 从末位起模拟竖式加法
    i, j, carry = len(num1) - 1, len(num2) - 1, 0
    digits = []
    while i >= 0 or j >= 0 or carry:
        s = carry
        if i >= 0:
            s += int(num1[i])
            i -= 1
        if j >= 0:
            s += int(num2[j])
            j -= 1
        digits.append(s % 10)
        carry = s // 10
    return ''.join(map(str, reversed(digits)))

复杂度与归属

时间复杂度O(max(m, n))
空间复杂度O(1)
所属分类字符串
题源LeetCode 415

关联教程

返回题图鉴