// https://leetcode.com/problems/add-two-numbers class Solution { public ListNode addTwoNumbers(ListNode l1, ListNode l2) { BigInteger sumOfParsedNumbers = getReverseNumber(l1).add(getReverseNumber(l2)); ListNode newListNode = new ListNode(); ListNode currentlyReadingNode = newListNode; char[] chars = String.valueOf(sumOfParsedNumbers).toCharArray(); for (int i = chars.length - 1; i >= 0; i--) { currentlyReadingNode.val = Integer.parseInt(String.valueOf(chars[i])); if (i > 0) { currentlyReadingNode.next = new ListNode(); currentlyReadingNode = currentlyReadingNode.next; } } return newListNode; } public BigInteger getReverseNumber(ListNode listNode) { StringBuilder stringifiedNumber = new StringBuilder(); while (true) { stringifiedNumber.append(listNode.val); if (listNode.next != null) { listNode = listNode.next; } else { break; } } return new BigInteger(stringifiedNumber.reverse().toString()); } } class ListNode { int val; ListNode next; ListNode() { } ListNode(int val) { this.val = val; } ListNode(int val, ListNode next) { this.val = val; this.next = next; } }