連結串列求和 II
阿新 • • 發佈:2019-01-04
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; } }