思路:
大數用String類來保存。大數的每個位分別相加,保留每個位的進位給下一位,最後結果依然保存在String類中。
public class BigNumber {
public String add(String a, String b) {
String ret = "";
int lenA = a.length();
int lenB = b.length();
int maxLen = lenA > lenB ? lenA : lenB;
int minLen = lenA < lenB ? lenA : lenB;
StringBuilder s = new StringBuilder();
//要保證兩個數位數相同,位數少的前面補0
for (int i = 0; i < maxLen - minLen; i++) {
s.append(0);
}
if (minLen == lenA) {
s.append(a);
} else {
s.append(b);
}
s = new StringBuilder();
int tempA, tempB, result;
int sc = 0;//進位
for (int i = maxLen - 1; i >= 0; i--) {
tempA = Integer.valueOf(a.charAt(i));
tempB = Integer.valueOf(b.charAt(i));
result = tempA + tempB + sc;
sc = result / 10;
result = result % 10;
s.append(result);
}
//如果加到最高爲仍有進位,那麼也要加上去
if (sc == 1) {
s.append(1);
}
//因爲是從個位依次相加的,所以結果要倒過來
ret = s.reverse().toString();
return ret;
}
}