原题
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.
题意
给出两个数字字符串,将他们看成数字进行相加,然后再把和以数字的形式返回。
思路
转换为数组,进行相加,同时考虑到进位的问题。
代码
public class Solution {
public String addStrings(String num1, String num2) {
StringBuilder builder=new StringBuilder();
String longer=num1;
String shorter=num2;
if(num1.length()<num2.length()){
longer=num2;
shorter=num1;
}
char[]l1=longer.toCharArray();
char[]s1=shorter.toCharArray();
int l=l1.length,s=s1.length;
int temp=0,reminder=0;
char base='0';
while(s>0){
temp=l1[l-1]+s1[s-1]-2*base+reminder;
//考虑到进位的问题
reminder=temp/10;
//将余数添加到新的数组中
builder.append(temp%10);
s--;l--;
}
while (l>0) {
temp=l1[l-1]-base+reminder;
reminder=temp/10;
builder.append(temp%10);
l--;
}
if(reminder!=0)builder.append(reminder);
//将builder翻转,然后转化为字符串
return builder.reverse().toString();
}
}