public class NumPlus {
public static String addStrings(String num1,
String num2) {
char[] num1Ch = num1.toCharArray();
char[] num2Ch = num2.toCharArray();
//reverse
char[] reverse1 = reverse(num1Ch);
char[] reverse2 = reverse(num2Ch);
int length1 = num1Ch.length;
int length2 = num2Ch.length;
int max = length1 >= length2 ? length1 : length2;
char[] res = new char[max];
boolean flag = false;
//是否进位
int nextI = 0;
for (int i = 0; i < max; i++) {
if (i <=length1-1 && i<=length2-1) {
// ascii表码减48即相加的值
int i1 = reverse1[i] + reverse2[i] -48 +nextI;
if (i1 > 57) {
nextI = 1;
i1 -= 10;
if (i == max-1) {
flag = true;
}
} else {
nextI = 0;
}
res[i] = (char) i1;
} else if(i>length1-1){
//num2数据多
int i2 = reverse2[i] + nextI;
if (i2 > 57) {
nextI = 1;
i2 -= 10;
if (i == max-1) {
flag = true;
}
} else {
nextI = 0;
}
res[i] = (char) i2;
} else {
//num2数据多
int i1 = reverse1[i] + nextI;
if (i1 > 57) {
nextI = 1;
i1 -= 10;
if (i == max-1) {
flag = true;
}
} else {
nextI = 0;
}
res[i] = (char) i1;
}
}
char[] reverse = reverse(res);
String str = String.valueOf(reverse);
System.out.println(str);
return flag?"1"+str:str;
}
private static char[] reverse(char[] a){
char[] b = a;
for(int start=0,end=b.length-1;start<end;start++,end--) {
char temp=b[start];
b[start]=b[end];
b[end]=temp;
}
return b;
}
}