大数相加
编程语言的数据类型所能表示的数据类型是有范围的,对于较大的数JAVA中有类BigInteger
可以直接调用,但更常用的方法时借助于数组或字符串表示大数。有了加法可以推导出减法、乘法等运算
加法思路
无论是数组还是字符串,两数相加的思路是一致,均从数据尾部开始依次相加,有进位则加1,最终返回结果。
以字符串为例,牛客网原题
输入:两个字符串
输出:相加结果的字符串形式
示例:“12” + “50” --> “62”
public String addBigNum (String s, String t) {
StringBuilder ans = new StringBuilder();
int carry = 0;
int i = s.length() - 1;
int j = t.length() - 1;
while(i >= 0 || j >= 0 || carry != 0){
int x = i >= 0 ? s.charAt(i--) - '0' : 0;
int y = j >= 0 ? t.charAt(j--) - '0' : 0;
int sum = x + y + carry;
carry = sum / 10;
ans.append(sum % 10);
}
return ans.reverse().toString();
}
也可以用栈存储结果。