Leetcode 题目描述
给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。
注意:
num1 和num2 的长度都小于 5100.
num1 和num2 都只包含数字 0-9.
num1 和num2 都不包含任何前导零。
你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。
第一种解法
采用小学所学的竖式加法进行计算。从低位开始进行计算,如果进位则添加到高位。
在计算的过程中需要对每个字符串形式的字符进行转换,然后参与进行计算。
遍历只需要(O(n))的时间
- 加法中的一个特性是如果两个字符串其中有一个没有结束,那么加法的就会继续进行
- 加法中的另外一个特性是如果进行进位不为0,那么加法也会继续进行。直接到进位为0
demo
class Solution {
public String addStrings(String num1, String num2) {
int i = num1.length()-1;
int j = num2.length()-1;
int add = 0;
StringBuilder sb = new StringBuilder();
while(i >= 0 || j >=0 || add !=0){
if(i >= 0) add += num1.charAt(i--) - '0';
if(j >= 0) add += num2.charAt(j--) - '0';
sb.append(add%10);
add /= 10;
}
return sb.reverse().toString();
}
}