写的有些复杂了,还是太年轻。。。。
str2 += l2->val;
l2 = l2->next;
}
int size = min(str1.size(), str2.size());
if(size == str1.size()) str = str2;
else str = str1;
for(int i = 0; i < size; i++)
str[i] = str1[i] + str2[i];
str += 'A';
int i = 0;
int temp = 0;
while(str[i] != 'A')
{
str[i] += temp;
if(str[i] > 9)
{
temp = str[i] / 10;
str[i] -= 10 * temp;
}
else
temp = 0;
i++;
}
if(temp > 0)
{
str[str.size()-1] = temp;
str += 'A';
}
ListNode* head = (ListNode*)malloc(sizeof(ListNode));
ListNode* p1;
ListNode* p2;
for(int i = 0; i <= str.size()-2; i++)
{
if(i == 0)
{
head->val = str[i];
p1 = head;
}
else
{
p2 = (ListNode*)malloc(sizeof(ListNode));
p1->next = p2;
p2->val = str[i];
p1 = p2;
}
if(i == str.size()-2) p1->next = NULL;
}
return head;
}
};
附上大神的代码一份
ListNode* Solution::addTwoNumbers(ListNode* l1, ListNode* l2)
{
ListNode *result;
ListNode *dump = new ListNode((int)0);
ListNode **sum = &result;
int carry = 0;
int now = 0;
while(l1 != dump || l2 != dump || carry != 0)
{
now = (l1->val + l2->val + carry)%10;
carry = (l1->val + l2->val + carry)/10;
*sum = new ListNode(now);
sum = &(*sum)->next;
if (l2->next == NULL)
l2 = dump;
else l2 = l2->next;
if (l1->next == NULL)
l1 = dump;
else l1 = l1->next;
}
delete dump;
return result;
}