【java大数库暴力】给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。

    技术2022-07-10  95

    给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。

    如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。

    您可以假设除了数字 0 之外,这两个数都不会以 0 开头。

    示例:

    输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 0 -> 8 原因:342 + 465 = 807

    class ListNode { int val; ListNode next; ListNode(int x) { val = x; } } //[2,4,3] //[5,6,4] class Solution { @Test public ListNode addTwoNumbers(ListNode l1, ListNode l2) { StringBuilder sb1 = new StringBuilder(); StringBuilder sb2 = new StringBuilder(); while(l1 != null) { sb1.append(l1.val); l1 = l1.next; } while(l2 != null) { sb2.append(l2.val); l2 = l2.next; } BigInteger b1 = new BigInteger(sb1.reverse().toString()); BigInteger b2 = new BigInteger(sb2.reverse().toString()); BigInteger sum = b1.add(b2); String str = String.valueOf(sum); ListNode head = new ListNode(0); ListNode cur = head; for(int i = str.length() - 1; i >= 0; i--) { cur.next = new ListNode(str.charAt(i) - '0'); cur = cur.next; } return head.next; }

    如果用数学方法更简便吧。。。

    Processed: 0.036, SQL: 9