1 解题思路
就是用两个String表示的数字,不用库的情况下实现加法。
其实说白了就是高精度加法。。注意进位,注意处理长短不一样的数字,都从末尾开始相加就好,不多解释,看代码
2 原题
Given two non-negative numbers num1 and num2 represented as string, return the sum of num1 and num2.
Note:
The length of both num1 and num2 is < 5100.
Both num1 and num2 contains only digits 0-9.
Both num1 and num2 does not contain any leading zero.
You must not use any built-in BigInteger library or convert the inputs to integer directly.
3 AC解
public class Solution {
public String addStrings(String num1, String num2) {
//交换最大最小的,保证后续
String longer = num1;
String shorter = num2;
if(longer.length() < shorter.length()){
longer = num2;
shorter = num1;
}
int n=longer.length();
int m=shorter.length();
char l[] = longer.toCharArray();
char s[] = shorter.toCharArray();
//余数
int remainder = 0;
char base = '0';
//从末尾开始加
int tmp;
//从末尾开始加
StringBuilder res = new StringBuilder();
while(m --> 0){
n--;
tmp = l[n] + s[m] - 2*base + remainder;
remainder = tmp / 10;
res.append(tmp % 10);
}
//处理长的一边
while(n--> 0){
tmp = l[n] - base + remainder;
remainder = tmp / 10;
res.append(tmp % 10);
}
//处理最后的 进位
if (remainder !=0 ) res.append(remainder);
return res.reverse().toString();
}
}