题目地址(415. 字符串相加)
https://leetcode-cn.com/problems/add-strings/
题目描述
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| 给定两个字符串形式的非负整数 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 都不包含任何前导零
|
前置知识
公司
思路
- 利用ASCII码的差值变相的将char转换为int类型的参与加减
- 进位使用除法进行统计,具体见注释
- 由于String的不可分割性,所以使用StringBuilder进行每一步数字的添加。
关键点
代码
Java Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| class Solution { public String addStrings(String num1, String num2) { StringBuilder str =new StringBuilder(); int sum=0; int i=num1.length()-1; int j=num2.length()-1; while(i>=0||j>=0||sum>0){ if(i>=0) sum+=num1.charAt(i--)-'0'; if(j>=0) sum+=num2.charAt(j--)-'0'; str.append(sum%10); sum/=10; } return str.reverse().toString(); } }
|
字符串加法、链表加法以及二进制加法之类的都可以这么写
�的都可以这么写