5.11
终于开始做中等难度的题了,也算一个小小的里程碑了吧。
这个题,我是把链表转换成了字符串来做的。本来想转换成整型,但是想一定会越界的,最后还是采用了字符串。
就是最后的最后忘记了最高位的进位。
这个题自己感觉还算比较简单的吧。
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
public class Solution {
/**
* @param l1: the first list
* @param l2: the second list
* @return: the sum list of l1 and l2
*/
public ListNode addLists2(ListNode l1, ListNode l2) {
// write your code here
if(l1 == null){
return l2;
}
if(l2 == null){
return l1;
}
String s1 = "";
String s2 = "";
while(l1 != null){
s1 = s1+ Integer.toString(l1.val);
l1 = l1.next;
}
while(l2 != null){
s2 = s2 + Integer.toString(l2.val);
l2 = l2.next;
}
int length1 = s1.length() -1;
int length2 = s2.length() -1;
int flag = 0;
ListNode head = new ListNode(-1);
ListNode tmp = head;
while(length1 >= 0 && length2 >= 0){
int t = s1.charAt(length1) + s2.charAt(length2) -'0'-'0' + flag;
flag = t/10;
t = t%10;
ListNode newNode = new ListNode(t);
newNode.next = head.next;
head.next = newNode;
length1 --;
length2 --;
//System.out.println("t:" + t);
}
while(length1 >=0 ){
int t = s1.charAt(length1) -'0' + flag;
flag = t/10;
t = t%10;
ListNode newNode = new ListNode(t);
newNode.next = head.next;
head.next = newNode;
length1 --;
}
while(length2 >=0 ){
int t = s2.charAt(length2) -'0' + flag;
flag = t/10;
t = t%10;
ListNode newNode = new ListNode(t);
newNode.next = head.next;
head.next = newNode;
length2 --;
}
if(flag == 1){
ListNode newNode = new ListNode(1);
newNode.next = head.next;
head.next = newNode;
}
return head.next;
}
}