我需要在两个链表中存储两个非常大的数字(字符串,因为它们不适合 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,继续下一对...