// import java.util.*;

// /* // * public class ListNode { // * int val; // * ListNode next = null; // * } // */

// public class Solution { // /** // * // * @param head1 ListNode类 // * @param head2 ListNode类 // * @return ListNode类 // */ // public ListNode addInList (ListNode head1, ListNode head2) { // // write code here // ListNode p1 = reverse(head1); // ListNode p2 = reverse(head2); // ListNode newHead = new ListNode(0); // ListNode p = newHead; // int carry = 0; // while (p1 != null || p2 != null || carry > 0) { // int x, y; // if (p1 == null) { // x = 0; // } else { // x = p1.val; // p1 = p1.next; // } // if (p2 == null) { // y = 0; // } else { // y = p2.val; // p2 = p2.next; // } // int add = x + y + carry; // p.next = new ListNode(add % 10); // p = p.next; // carry = add / 10; // } // return reverse(newHead.next); // }

// public ListNode reverse(ListNode head) { // ListNode pre = null; // ListNode next = null; // while (head != null) { // next = head.next; // head.next = pre; // pre = head; // head = next; // } // return pre; // } // } import java.util.*;

/*

  • public class ListNode {
  • int val;
  • ListNode next = null;
  • } */

public class Solution { /** * * @param head1 ListNode类 * @param head2 ListNode类 * @return ListNode类 */ public ListNode addInList (ListNode head1, ListNode head2) { // write code here StringBuilder s1 = new StringBuilder();

    while(head1 != null){
        s1.append(head1.val);
        head1 = head1.next;
    }
    
    StringBuilder s2 = new StringBuilder();
    while(head2 != null){
        s2.append(head2.val);
        head2 = head2.next;
    }
    int carry = 0;
    int i = s1.length()-1;
    int j = s2.length()-1;
    StringBuilder arr = new StringBuilder();
    while(i >= 0 ||j >= 0||carry != 0){
        carry += i >= 0 ? s1.charAt(i)-'0' : 0;
        carry += j >= 0 ? s2.charAt(j)-'0' : 0;
        arr.append(carry % 10);
        carry /= 10;
        i--;
        j--;
    }
    arr.reverse().toString();
    int start = arr.charAt(0) == 0 ? 1 :0;
    ListNode head = new ListNode(arr.charAt(start++)- '0');
    ListNode p = head;
    while(start < arr.length()){
        ListNode node = new ListNode(arr.charAt(start ++) - '0');
        p.next = node;
        p = node;
    }
    return head;
}

}