import java.math.BigInteger;
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
//建立两个stringbuffer用来存储和转换字符串
StringBuffer l1sum = new StringBuffer();
StringBuffer l2sum = new StringBuffer();
//当有l1有next的时候,进入循环
while(l1.next!=null){
//l1sum字符串接上当前链表的val
l1sum=l1sum.append(l1.val);
//切换
l1=l1.next;
}
//当有l2有next的时候,进入循环
while (l2.next!=null){
//l2sum字符串接上当前链表的val
l2sum=l2sum.append(l2.val);
//切换
l2=l2.next;
}
//由于最后没有next,上面的循环不会做,会来到最后一层,所以要在加一次
l1sum=l1sum.append(l1.val);
l2sum=l2sum.append(l2.val);
//字符串反转
l1sum = new StringBuffer(l1sum).reverse();
l2sum = new StringBuffer(l2sum).reverse();
//由于各种数值溢出 只能BigInteger 字符串切换成数字
BigInteger s = new BigInteger(String.valueOf(l1sum));
BigInteger b = new BigInteger(String.valueOf(l2sum));
//将s+b的值转换为 字符串
String sb= String.valueOf(s.add(b));
//新建一个链表 指向头指针
ListNode lists = new ListNode(0);
//链表二号,用于存储信息
ListNode lists1 = lists;
//链表存储数据
for (int i = 0 ; i <sb.length();i++){
lists1.next = new ListNode(sb.charAt(sb.length()-1-i)-'0');
lists1 = lists1.next;
}
//返回链表
return lists.next;
}
}
5%!!!!!!!!!!!!