一、为什么需要高精度
编程语言内置的整数类型有上限(Java long 最大约 9.2×10^18)。当数字超过这个范围时(如 100 位的大数),必须用数组/字符串模拟竖式运算。
面试高频题:
| 题目 | 操作 | 难度 |
|---|---|---|
| LC 415. 字符串相加 | 大数加法 | Easy |
| LC 43. 字符串相乘 | 大数乘法 | Medium |
| LC 2. 两数相加 | 链表加法 | Medium |
| LC 67. 二进制求和 | 二进制加法 | Easy |
| 剑指 16. 数值的整数次方 | 快速幂 | Medium |
二、高精度加法
2.1 核心思路
模拟竖式:从最低位开始逐位相加,维护进位。
9 9 9
+ 1 1
---------
1 0 1 0
2.2 模板
String addStrings(String num1, String num2) {
StringBuilder sb = new StringBuilder();
int i = num1.length() - 1, j = num2.length() - 1, carry = 0;
while (i >= 0 || j >= 0 || carry > 0) {
int sum = carry;
if (i >= 0) sum += num1.charAt(i--) - '0';
if (j >= 0) sum += num2.charAt(j--) - '0';
sb.append(sum % 10);
carry = sum / 10;
}
return sb.reverse().toString();
}