使用链表表示大数字并执行操作



我需要在两个链表中存储两个非常大的数字(字符串,因为它们不适合 int(,将它们相加,然后显示结果(再次,字符串(。

我可以直接将数字存储到列表中。

312312可以存储为2->1->3->2->1->3(实际数量会很长(

111119可以存储为 9->1->1->1->1->1

然后我可以添加它们

11->2->4->3->2->4

通常我可以做 11*10^0 + 2*10^1 +...+ 4*10^5 并得到423431但所有这些运算(乘法、加法和幂(将再次是整数运算,并且由于实际数字将非常大,int 或 long 将不支持这些运算。最终结果必须是一个字符串。

所以我需要一种方法在不使用 int 的情况下将 11->2->4->3->2->4 转换为 423431。另外,我不能使用BigInteger。谁能帮我?

好吧,你需要做的第一件事就是实现携带。

对于每个数字(即>= 10(,您需要将该数字/10增加下一个数字,并将该数字设置为该数字%10

所以11->2->...变得1->3->....

然后实际生成字符串。

对于性能最高的选项,我建议StringBuilder.

只需append链表中的每个数字,然后reverse().toString()(因为您从最小的数字开始(。

想想如何在纸上手工完成。如果一对数字的总和大于 9,则记下进位数字 1,并将其添加到下一对数字的总和中。

在计算机程序中,您可以使用局部变量:将第一个和最后一个数字的数字相加,如果总和大于..将进位设置为1,否则将进位设置为0,继续下一对...

相关内容

  • 没有找到相关文章

最新更新