AddTwoNumbers.java
· 1.4 KiB · Java
Raw
// 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;
}
}
| 1 | // https://leetcode.com/problems/add-two-numbers |
| 2 | class Solution { |
| 3 | |
| 4 | public ListNode addTwoNumbers(ListNode l1, ListNode l2) { |
| 5 | BigInteger sumOfParsedNumbers = getReverseNumber(l1).add(getReverseNumber(l2)); |
| 6 | |
| 7 | ListNode newListNode = new ListNode(); |
| 8 | ListNode currentlyReadingNode = newListNode; |
| 9 | |
| 10 | char[] chars = String.valueOf(sumOfParsedNumbers).toCharArray(); |
| 11 | |
| 12 | for (int i = chars.length - 1; i >= 0; i--) { |
| 13 | currentlyReadingNode.val = Integer.parseInt(String.valueOf(chars[i])); |
| 14 | |
| 15 | if (i > 0) { |
| 16 | currentlyReadingNode.next = new ListNode(); |
| 17 | currentlyReadingNode = currentlyReadingNode.next; |
| 18 | } |
| 19 | |
| 20 | } |
| 21 | |
| 22 | return newListNode; |
| 23 | } |
| 24 | |
| 25 | public BigInteger getReverseNumber(ListNode listNode) { |
| 26 | StringBuilder stringifiedNumber = new StringBuilder(); |
| 27 | |
| 28 | while (true) { |
| 29 | stringifiedNumber.append(listNode.val); |
| 30 | |
| 31 | if (listNode.next != null) { |
| 32 | listNode = listNode.next; |
| 33 | } else { |
| 34 | break; |
| 35 | } |
| 36 | } |
| 37 | |
| 38 | return new BigInteger(stringifiedNumber.reverse().toString()); |
| 39 | } |
| 40 | } |
| 41 | |
| 42 | class ListNode { |
| 43 | |
| 44 | int val; |
| 45 | ListNode next; |
| 46 | |
| 47 | ListNode() { |
| 48 | } |
| 49 | |
| 50 | ListNode(int val) { |
| 51 | this.val = val; |
| 52 | } |
| 53 | |
| 54 | ListNode(int val, ListNode next) { |
| 55 | this.val = val; |
| 56 | this.next = next; |
| 57 | } |
| 58 | } |
| 59 |