题目描述:

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

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

示例 1:

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

示例 2:

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

分析:在完成代码之前,我们首先看看这一题应该是一个什么样子的思路。首先,输入两个字符串a和b,如果两个字符串中元素个数不相等,我们应该天添加0使其位数相等,方便进行运算,涉及到元素个数,所以我们应该在最开始求出各个字符串中的长度。由于字符串中的元素1和0不是数字1和0,故按照ASCII码表,我们应该把它转换成数字,a[i]-'0'。最后我们还需要一个进位标志,如果a[i]和b[j]都为1,则需要进位。

代码如下

class Solution {
public:string addBinary(string a, string b) {string result; //用来存放结果int a_len = a.size(); //字符串的长度int b_len= b.size();int n = max(a_len, b_len);bool carry = false;   //进位标志if (a_len > b_len) {for (int i = 0; i < a_len - b_len; ++i)  b.insert(b.begin(), '0'); //在前面位 //置加0使两个字符串长度相等}else if (a_len < b_len) {for (int i = 0; i < b_len - a_len; ++i)  a.insert(a.begin(), '0');}for (int i = n - 1; i >= 0; --i) {int tmp = 0;if (carry) tmp = (a[i]-'0') + (b[i]-'0') + 1;   //字符串中的0表示十进制数48,所 //以应该减去‘0’才能表示数字1else tmp = (a[i]-'0' ) + (b[i]-'0');if (tmp == 0) {result.insert(result.begin(), '0');    carry = false;}else if (tmp == 1) {result.insert(result.begin(), '1');carry = false;}else if (tmp == 2) {result.insert(result.begin(), '0');carry = true;}else if(temp==3){result.insert(result.begin(),  '1');carry=false;}}if (carry) result.insert(result.begin(), '1');return result;}
};

leetcode 二进制求和 addBinary相关推荐

  1. [LeetCode]二进制求和

    题目 代码 class Solution { public:string addBinary(string a, string b){int lenA = a.length();int lenB = ...

  2. java两个二进制数求和,Leetcode 67:Add Binary(二进制求和)

    Leetcode 67:Add Binary(二进制求和) (python.java) Given two binary strings, return their sum (also a binar ...

  3. LeetCode:二进制求和【67】

    LeetCode:二进制求和[67] 题目描述 给定两个二进制字符串,返回他们的和(用二进制表示). 输入为非空字符串且只包含数字 1 和 0. 示例 1: 输入: a = "11" ...

  4. 【LeetCode·位运算.67】二进制求和,详解分析+两种思路+知识点总结

    二进制求和

  5. [每日一题] 106. 二进制求和(字符串、数学)

    1. 题目来源 链接:二进制求和 来源:LeetCode 2. 题目说明 给定两个二进制字符串,返回他们的和(用二进制表示). 输入为非空字符串且只包含数字 1 和 0. 示例1: 输入: a = & ...

  6. 067 Add Binary 二进制求和

    给定两个二进制字符串,返回他们的和(用二进制表示). 案例: a = "11" b = "1" 返回 "100" . 详见:https:// ...

  7. 67. 二进制求和(转换法)

    二进制求和(C, Python实现) 1. 题目描述 2. 题目分析 3. C语言实现 4. Python实现 1. 题目描述 难度:简单 2. 题目分析 转换法(Python) 转换法是最容易想到的 ...

  8. 二进制求和和x的平方根

    二进制求和没什么可说的,就是一个很简单的相加,跟加一那道题的做法基本一致(准确来说就是完全一致).之所以提一下,是因为今天第一次遇到内存泄漏--之前写的基本是有自动GC和内存管理的语言(比如Java) ...

  9. Leetcode每日一题:67.add-binary(二进制求和)

    思路:利用二进制规则,选长度最长的为标准,从两个字符串尾部开始相加,对应位求和sum,之后置该位为sum%2,进位为sum/2: string addBinary(string a, string b ...

最新文章

  1. awk 分隔符_awk命令使用实例
  2. Python学习笔记:接下来
  3. 防篡改对象之密封对象
  4. 0054-软件版本号问题
  5. GridView批量删除页面最后N条数据时自动翻到上一页问题
  6. Linux C入门之路,Linux C++学习之路
  7. 用ES6 Generator替代回调函数
  8. HTML button标签
  9. 第八章《Unity游戏优化》内存管理
  10. 服务器系统还原后如何退回去,如何进行系统还原
  11. 数据结构(C#)_排序算法(冒泡排序)
  12. linux总复习(二)
  13. ChatGPT教程之 01 什么是ChatGPT革命性的对话生成新工具
  14. 无人驾驶与室内移动机器人对比思考
  15. JMH基准测试工具 (一):介绍
  16. license.lic
  17. 小程序引用阿里iconfont
  18. ADSCOPE产品解读,Header Bidding的基本运营思路和应用技巧
  19. 计算机保养与维护论文答辩ppt,计算机科学与技术专业论文答辩PPT范例.ppt
  20. 3000元投影仪对比评测,当贝D3X完胜极米NEW Z6 X

热门文章

  1. 机器学习与数据挖掘——第二章 数据与数据预处理
  2. java23种设计模式个人整理_java23种设计模式-行为型模式之模板方法模式
  3. 用Python分析了20万场吃鸡数据,有不少有趣的发现
  4. 语言怎么得到直流电压并采样_交流电AC如何转换成直流电DC?
  5. imac android studio,Mac安装Android Studio的时候忘记安装Avd Manager怎么办?
  6. 牛逼!不得不服,第一次有人把Java 反射机制讲解这么透!
  7. laya 怎么生成签名_PHP开发API接口签名生成及验证
  8. c语言管理系统信息以文件保存,求大神给一份能用的c语言的学籍管理系统:且能进行文件保存...
  9. linux应用与管理,Linux操作系统应用与管理
  10. java自动随机字符_java随机字符生成工具