Java 中除以字符串表示的大数

2025 年 1 月 6 日 | 阅读 2 分钟

输入中,给定一个大数(以字符串形式)。我们需要用另一个数(以int数据类型形式)来除它。我们的任务是找到这些数字的除法,并返回这些数字的结果。

示例 1

输入

int num = 124587785421

int div = 963

输出

结果是 129374647

示例 2

输入

int num = 12548796324587

int div = 120

输出

结果是 104573302704

示例 3

输入

int num = 475213698410236589560

int div = 33

输出

结果是 14400415103340502713

方法:朴素方法

算法

步骤 1: 创建一个StringBuilder来保存结果。

步骤 2: 从输入字符串创建一个字符数组。

步骤 3: 将进位(carry)的初始值设置为0。

步骤 4: 对于数组中的每个字符,计算当前数字的公式是:进位 * 10 + 当前数字。

步骤 5: 计算部分商(current_number / divisor),并将其添加到结果中。

步骤 6: 通过计算 current_number % divisor 来更新进位。

步骤 7: 遍历结果,找到第一个非零字符。

步骤 8: 从该字符开始,返回到末尾的子字符串。

步骤 9: 如果结果中的所有字符都是零,则返回“0”。

步骤 10: 最后,打印商。

实施

文件名: StringLongDivision.java

输出

 
The result is: 104573302704

复杂度分析

上述代码的时间复杂度为 O(N),空间复杂度为 O(N),其中 N 是数字字符串的长度。