链表 Add Two Numbers
来源:互联网 发布:销售网络的资源情况 编辑:程序博客网 时间:2024/06/07 17:01
思想:
注意细节。
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: string ListToString(ListNode *l) { if(l == NULL) return "0"; string s; while(l != NULL) { s.push_back(l->val+'0'); l = l->next; } return s; } ListNode* StringToListNode(string s) { ListNode *l, *head; for(int i = 0; i < s.size(); i++) { if(i == 0) { int val = s[i]-'0'; head = new ListNode(val); l =head; } else { ListNode *node = new ListNode(s[i]-'0'); head->next = node; head = head->next; } } head->next = NULL; return l; } //Add Two Numbers ListNode *addTwoNumbers(ListNode *l1, ListNode *l2) { string s1 = ListToString(l1); string s2 = ListToString(l2); if(s1 == "0" && s2 == "0") { ListNode *l = new ListNode(0); return l; } else if(s1 == "0") { return StringToListNode(s2); } else if(s2 == "0") { return StringToListNode(s1); } string s3; int carry = 0; int i; for(i = 0; s1[i]!='\0' && s2[i]!='\0'; i++) { int sum = s1[i]-'0' + s2[i]-'0' + carry; s3.push_back(sum%10 + '0'); carry = sum/10; } if(s1[i]=='\0') { while(s2[i]!='\0') { s3.push_back(((carry+(s2[i]-'0'))%10) + '0'); carry = (carry+(s2[i]-'0'))/10; i++; } } else if(s2[i]=='\0') { while(s1[i]!='\0') { s3.push_back(((carry+(s1[i]-'0'))%10) + '0'); carry = (carry+(s1[i]-'0'))/10; i++; } } if(carry != 0) { s3.push_back(carry+'0'); } return StringToListNode(s3); }};
0 0
- 【链表】Add Two Numbers
- 链表 Add Two Numbers
- LeetCode--Add Two Numbers(链表)
- leetcode Add Two Numbers 链表
- leetcode--Add Two Numbers--链表
- leetcode---Add Two Numbers---链表
- LeetCode_2 Add Two Numbers(链表)
- leetcode---add-two-numbers---链表
- leetcode[#2 链表]Add Two Numbers
- leetcode Add Two Numbers(链表)
- leetcoode 2.Add Two Numbers--链表
- LeetCode 2 Add Two Numbers(链表)
- leetcode_c++:链表:add two numbers(002)
- [leetcode] 【链表】2. Add Two Numbers
- Leetcode#445(链表)-Add Two Numbers II
- 链表-leetcode 445 Add Two Numbers
- LeetCode-2-Add-Two-Numbers 链表
- Add two numbers & Add binary
- Java-Tcp/Ip-CS时间问询UDP应用Demo
- 15第六周项目五——友元类
- 吝啬的国度
- JavaScript权威指南笔记5_类和模块
- 多边形区域填充算法--递归种子填充算法
- 链表 Add Two Numbers
- 数据存储与访问(1)-------------文件
- Android图片缩放总结及比较
- FFmpeg之Rtsp分析(一):Pause和seek
- MergeSort归并排序图文代码详解
- [html] 实现点击切图的小算法
- 用单循环初始化多维数组
- 5.用户模块:注册将数据存入到数据库
- linux无法ping通windows