问题

该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflying.com/archives/3873 访问。

给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。

注意:

  1. num1 和num2 的长度都小于 5100.
  2. num1 和num2 都只包含数字 0-9.
  3. num1 和num2 都不包含任何前导零。
  4. 你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。

Given two non-negative integers num1 and num2 represented as string, return the sum of num1 and num2.

Note:

  1. The length of both num1 and num2 is < 5100.
  2. Both num1 and num2 contains only digits 0-9.
  3. Both num1 and num2 does not contain any leading zero.
  4. You must not use any built-in BigInteger library or convert the inputs to integer directly.

示例

该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflying.com/archives/3873 访问。

public class Program {public static void Main(string[] args) {var num1 = "392";var num2 = "19823";var res = AddStrings(num1, num2);Console.WriteLine(res);Console.ReadKey();}private static string AddStrings(string num1, string num2) {//定义一个大1位的数组var max = Math.Max(num1.Length, num2.Length) + 1;var total = new int[max];//向左补0到相同数量,否则需要额外处理边界num1 = num1.PadLeft(max, '0');num2 = num2.PadLeft(max, '0');//进位标识var carry = false;var sum = 0;for(int i = max - 1; i >= 0; i--) {sum = int.Parse(num1[i].ToString()) + int.Parse(num2[i].ToString());if(carry) sum++;total[i] = int.Parse(sum.ToString()[sum.ToString().Length - 1].ToString());carry = sum > 9;}//定义结果var res = string.Empty;//遍历输出到restotal.ToList().ForEach(r => { res += r.ToString(); });//取消最高位0res = res.TrimStart('0');//如果空了,返回0if(res.Length == 0) res = "0";//返回结果return res;}}

以上给出1种算法实现,以下是这个案例的输出结果:

该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflying.com/archives/3873 访问。

20215

分析:

显而易见,以上算法的时间复杂度为:  。

C#LeetCode刷题之#415-字符串相加(Add Strings)相关推荐

  1. LeetCode第二题:两数相加(Add Two Numbers)

    LeetCode第二题:两数相加(python,java) You are given two non-empty linked lists representing two non-negative ...

  2. LeetCode刷题实战(2):Add Two Numbers

    题2描述: 2 Add Two Numbers 29.10% Medium You are given two non-empty linked lists representing two non- ...

  3. leetCode刷题 2. 两数相加

    原题链接: leetcode-cn.com/problems/ad- 题目描述 给定两个非空链表来表示两个非负整数.位数按照逆序方式存储,它们的每个节点只存储单个数字.将两数相加返回一个新的链表. 你 ...

  4. leetcode刷题 2.两数相加

    解法 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() ...

  5. C#LeetCode刷题之#258-各位相加(Add Digits)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3860 访问. 给定一个非负整数 num,反复将各个位上的数字相加 ...

  6. 学渣的刷题之旅 leetcode刷题 2. 两数相加

    给出两个非空的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序的方式存储的,并且它们的每个节点只能存储一位数字. 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和. 您可以 ...

  7. Python——LeetCode刷题——【387. 字符串中的第一个唯一字符】

    题目描述: 解题思路: 逐个遍历字符串中的每个字符.用字典记录在字符串中每个字符的出现次数.最后遍历字符串中每个字符,字典中该字符作为key对应的value值为1,return首个value值为1的字 ...

  8. LeetCode刷题实战(43):Multiply Strings

    题目描述: 43 Multiply Strings 28.7% Medium Given two non-negative integers num1 and num2 represented as ...

  9. C#LeetCode刷题-数学

    数学篇 # 题名 刷题 通过率 难度 2 两数相加 29.0% 中等 7 反转整数 C#LeetCode刷题之#7-反转整数(Reverse Integer) 28.6% 简单 8 字符串转整数 (a ...

  10. ​LeetCode刷题实战417:太平洋大西洋水流问题

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

最新文章

  1. 不允许使用java方式启动_细品 Java 中启动线程的正确和错误方式
  2. 第8周课堂测试3(课上未完成)
  3. 2012CSDN网站六大类职位火热招聘:社区编辑、产品交互设计、信息安全主管、前端工程师、Ruby工程师、搜索工程师...
  4. windows 2008R2鼠标移动到任务栏一直是漏斗状态
  5. 关于《统计学习方法》中第三章构造kd树算法中的中位数问题
  6. 系统自带测试软件,无需鲁大师检测!Windows自带工具检查系统健康度
  7. 金士顿8GU盘量产实录
  8. 官方固件库V1.4版本介绍
  9. 基于Matlab的DSB调制解调,课程设计(论文)-基于MATLAB的DSB调制与解调分析.doc
  10. java backoff_Java BackOff类代码示例
  11. Chrome浏览器网页保存成图片
  12. 麒麟V10系统-无法打开任务管理器
  13. 堪称「神器」的电脑软件
  14. Linux高级应用(十)控制蜂鸣器的应用程序
  15. 青海出游全年时间表,你要收藏哟!
  16. 马斯克:需要300T电池
  17. UNCTF2022中RSA题目总结
  18. L1-040 最佳情侣身高差(10 分)
  19. 【打卡】广告-信息流跨域ctr预估(待更新)
  20. 【单片机高阶编程】51单片机定义函数到指定的程序地址

热门文章

  1. Java—线程的生命周期及线程控制方法详解
  2. 【Linux入门学习之】grep命令详解
  3. 爬虫-04-常见的请求头
  4. mysql使用全备文件恢复单个库或者单个表
  5. 如何在Ubuntu 18.04上安装Django
  6. 记一次转不过弯的递归
  7. Nginx站点缓存设置
  8. (连通图 ) Redundant Paths --POJ --3177
  9. JavaWEB/JSP 中简单的验证码 springMVC
  10. SharePoint 2010认证模式