问题

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

给定两个二进制字符串,返回他们的和(用二进制表示)。

输入为非空字符串且只包含数字 1 和 0。

输入: a = "11", b = "1"

输出: "100"

输入: a = "1010", b = "1011"

输出: "10101"


Given two binary strings, return their sum (also a binary string).

The input strings are both non-empty and contains only characters 1 or 0.

Input: a = "11", b = "1"

Output: "100"

Input: a = "1010", b = "1011"

Output: "10101"


示例

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

public class Program {public static void Main(string[] args) {var a = "1010";var b = "1011";var res = AddBinary(a, b);Console.WriteLine(res);Console.ReadKey();}private static string AddBinary(string a, string b) {//找出最长的加1,留1位进位var max = Math.Max(a.Length, b.Length) + 1;//按总长度补位,以便统一处理,否则要考虑边界var a2 = a.PadLeft(max, '0');var b2 = b.PadLeft(max, '0');//定义list存中间计算结果var list = new List<int>();//进位标志var carryFlag = false;for(int i = max - 1; i >= 0; i--) {var add = int.Parse(a2[i].ToString())+ int.Parse(b2[i].ToString());//计算当前位的值,如果之前进位标志为真,则额外+1if(carryFlag) add++;//大于等于2时,此时仍然需要进位,带入下一次循环carryFlag = add >= 2;//存入中间计算结果list.Add(add % 2);}//定义结果var res = string.Empty;//反转,list是按逆序从低位到高位的list.Reverse();//遍历输出到reslist.ForEach(r => { res += r.ToString(); });//取消最高位0res = res.TrimStart('0');//如果空了,返回0if(res.Length == 0) res = "0";//返回结果return res;}}

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

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

10101

分析:

设两个二进制字符串中较长的字符串的长度为 n ,那么以上算法的时间复杂度为:  。

C#LeetCode刷题之#67-二进制求和(Add Binary)相关推荐

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

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

  2. 《LeetCode刷题》762. 二进制表示中质数个计算置位(java篇)

    题目描述: 给你两个整数 left 和 right ,在闭区间 [left, right] 范围内,统计并返回 计算置位位数为质数 的整数个数. 计算置位位数 就是二进制表示中 1 的个数. 例如, ...

  3. C#LeetCode刷题之#598-范围求和 II​​​​​​​(Range Addition II)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3881 访问. 给定一个初始元素全部为 0,大小为 m*n 的矩阵 ...

  4. leetcode刷题 66 67

    大神做法 class Solution:def plusOne(self, digits: List[int]) -> List[int]:for i in range(len(digits)- ...

  5. C#LeetCode刷题之#704-二分查找(Binary Search)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3999 访问. 给定一个 n 个元素有序的(升序)整型数组 num ...

  6. C#LeetCode刷题-数学

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

  7. ​LeetCode刷题实战69:x 的平方根

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

  8. ​LeetCode刷题实战70:爬楼梯

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

  9. ​LeetCode刷题实战81:搜索旋转排序数组 II

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

  10. C#LeetCode刷题-二分查找​​​​​​​

    二分查找篇 # 题名 刷题 通过率 难度 4 两个排序数组的中位数 C#LeetCode刷题之#4-两个排序数组的中位数(Median of Two Sorted Arrays)-该题未达最优解 30 ...

最新文章

  1. 香港居民换领新智能身份证 市民对办理过程表满意
  2. 消息队列rabitMq
  3. 雨课堂c语言考试题库2020,雨课堂2020题目答案,雨课堂2020作业答案
  4. python 去除字符串的标点符号 用_Python输入和输出
  5. 【POJ - 3347 】Kadj Squares (计算几何,思维 或 扫描线)
  6. 四川南充计算机经贸学校,四川南充工贸学校计算机应用专业秋季计划
  7. hdu 1800 Flying to the Mars
  8. TypeError:Can't instantiate abstract class Ultraman with abstract methods sttack 报错
  9. 系统架构设计师:软件开发基础知识
  10. 最小拍控制算法c语言,第六章最小拍控制
  11. 关于QQ游戏大厅的架构我也想说几句
  12. 软件测试员比软件开发员要求低些吗?
  13. CSAPP实验四:性能优化实验(Perflab)
  14. Tensorflow常用函数汇总
  15. vue3bug-Invalid vnode type when creating vnode: null.
  16. Python项目实战:数据可视化与股票数据分析-关东升-专题视频课程
  17. 本科毕业平均年薪 30 万!经济寒冬挡不住 AI 人才的火热!
  18. FB和FF MIC的用途
  19. 推荐几款文字翻译软件,快速实现翻译
  20. 大数据存储项目-基于Flink的高速公路ETC入深圳数据实时分析平台

热门文章

  1. Linux(debian7)操作基础(五)之per调用shell命令
  2. Oracle之ROW_NUMBER() OVER函数
  3. 考勤信息管理系统 需求说明
  4. 类与对象的演练 好好学习的学生 java 1613807015
  5. 综合演练 对象数组 对象的方法 我们9203班 0912
  6. java作业 大蛇丸的召唤术 万蛇罗之阵 类与对象的演练
  7. javascript 西瓜一期 15 数据的存储单位
  8. Ubuntu更换apt镜像源
  9. 机器学习——Day 3 多元线性回归
  10. 申请https协议总结