public class Solution {
/**
*
* @param head1 ListNode类
* @param head2 ListNode类
* @return ListNode类
*/
public ListNode addInList (ListNode head1, ListNode head2) {
// write code here
StringBuffer sb1 = new StringBuffer();
StringBuffer sb2 = new StringBuffer();
while (head1 != null) {
sb1.append(head1.val);
head1 = head1.next;
}
while (head2 != null) {
sb2.append(head2.val);
head2 = head2.next;
}
String res = strAdd(sb1.toString(), sb2.toString());
ListNode root = new ListNode((int) (res.charAt(0) - '0'));
ListNode cur = root;
for (int i = 1; i < res.length(); i++) {
cur.next = new ListNode((int) (res.charAt(i) - '0'));
cur = cur.next;
}
return root;
}
public String strAdd(String s1, String s2) {
StringBuffer sb = new StringBuffer();
// 补全 让s1 s2等长
int lenA = s1.length(), lenB = s2.length();
StringBuffer sb1 = new StringBuffer();
StringBuffer sb2 = new StringBuffer();
for (int i = 0; i < Math.abs(lenA - lenB); i++) {
if (lenA < lenB) sb1.append(0);
else sb2.append(0);
}
sb1.append(s1);
sb2.append(s2);
s1 = sb1.toString();
s2 = sb2.toString();
//System.out.println(s1 + " + " + s2);
int cnt = 0;
for (int i = Math.max(lenA, lenB) - 1; i >= 0; i--) {
char c1 = s1.charAt(i), c2 = s2.charAt(i);
int sum = c1 - '0' + c2 - '0' + cnt;
if (sum < 10) {
sb.append(sum);
cnt = 0;
} else {
sb.append(sum % 10);
cnt = sum / 10;
}
}
if (cnt != 0) sb.append(cnt);
return sb.reverse().toString();
}
}