题目地址(415. 字符串相加)
https://leetcode-cn.com/problems/add-strings/
题目描述
给定两个字符串形式的非负整数 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 <= 104num1 和num2 都只包含数字 0-9num1 和num2 都不包含任何前导零
前置知识
公司
- 暂无
思路

当前位相加的数= num1.charAt + num2.charAt + 进位
进位=sum /10
然后把 个位也就是sun%10放到数组
最后如果有进位就再加个1
最后把sb反转
关键点
代码
- 语言支持:Java
Java Code:
class Solution {public String addStrings(String num1, String num2) {StringBuilder sb = new StringBuilder();int size1 = num1.length()-1;int size2 = num2.length()-1;int carry = 0;while (size1 >= 0 || size2 >= 0) {int sum1 = size1 >= 0 ? num1.charAt(size1) - '0' : 0;int sum2 = size2 >= 0 ? num2.charAt(size2) - '0' : 0;int sum = sum1 + sum2 + carry;carry = sum / 10;sb.append(sum % 10);size1--;size2--;}if (carry == 1) {sb.append(1);}return sb.reverse().toString();}}
复杂度分析
令 n 为数组长度。
- 时间复杂度:
#card=math&code=O%28n%29&id=c5Smb)
- 空间复杂度:
#card=math&code=O%28n%29&id=zrFlb)
