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

For example,
a = "11"
b = "1"
Return "100".

思路:逐位相加,进位保留在和的下一位中。

C++实现代码:

#include<iostream>
#include<string>
#include<vector>
using namespace std;class Solution
{
public:string addBinary(string a, string b){int size1=a.size()-1;int size2=b.size()-1;int size=max(size1,size2);string digits(size+1,'0');while(size1>=0&&size2>=0){if((a[size1]=='1')&&(b[size2]=='1')){digits[size-1]='1';if(size1==0&&size2==0)digits.insert(digits.begin(),'1');size1--;size2--;size--;}else if(((a[size1]=='1')||(b[size2]=='1'))&&(digits[size]=='0')){digits[size]='1';size1--;size2--;size--;}else if(((a[size1]=='1')||(b[size2]=='1'))&&(digits[size]=='1')){digits[size]='0';digits[size-1]='1';if(size1==0&&size2==0)digits.insert(digits.begin(),'1');size1--;size2--;size--;}else{digits[size]=digits[size];size1--;size2--;size--;}}cout<<digits<<endl;if(size1>=0){while(size1>=0&&size>=0){if((digits[size]=='1')&&(a[size1]=='1')){digits[size]='0';digits[size-1]='1';if(size==0)digits.insert(digits.begin(),'1');size1--;size--;}else if((digits[size]=='1')&&(a[size1]=='0')){size1--;size--;}else{digits[size]=a[size1];size--;size1--;}}}if(size2>=0){while(size2>=0&&size>=0){if((digits[size]=='1')&&(b[size2]=='1')){digits[size]='0';digits[size-1]='1';//最前面两个数相加需要进位的时候,在前面插入1if(size==0)digits.insert(digits.begin(),'1');size2--;size--;}else if((digits[size]=='1')&&(b[size2]=='0')){size2--;size--;}else{digits[size]=b[size2];size--;size2--;}}}return digits;}
};
int main()
{string b="100";string a="110010";Solution s;cout<<"digits: "<<s.addBinary(a,b)<<endl;
}

只能想到这么麻烦的方法,哎。。。

    string addBinary(string a, string b) {if(a.empty())return b;if(b.empty())return a;int carry=0;int i=a.size()-1;int j=b.size()-1;string res;int sum=0;while(i>=0&&j>=0){sum=a[i--]-'0'+b[j--]-'0'+carry;if(sum>=2){char c=sum%2+'0';res=c+res;carry=1;}else{char c=sum+'0';res=c+res;carry=0;}}while(i>=0){sum=carry+a[i--]-'0';if(sum>=2){char c=sum%2+'0';res=c+res;carry=sum/2;}else{char c=sum+'0';res=c+res;carry=0;}}while(j>=0){sum=carry+b[j--]-'0';if(sum>=2){char c=sum%2+'0';res=c+res;carry=sum/2;}else{char c=sum+'0';res=c+res;carry=0;}}if(carry==1)res.insert(0,"1");return res;}

Add Binary相关推荐

  1. LeetCode刷题记录4——67. Add Binary(easy)

    LeetCode刷题记录4--67. Add Binary(easy) 目录 LeetCode刷题记录4--67. Add Binary(easy) 题目 语言 思路 后记 题目 今天这题是与字符串相 ...

  2. leetcode 67 Add Binary

    Add Binary Total Accepted: 46815 Total Submissions: 189215 My Submissions Given two binary strings, ...

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

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

  4. LeetCode: Add Binary 解题报告

    Add Binary Given two binary strings, return their sum (also a binary string). For example, a = " ...

  5. LeetCode 67. Add Binary

    67. Add Binary My Submissions QuestionEditorial Solution Total Accepted: 81992 Total Submissions: 29 ...

  6. 67. Add Binary 二进制加法leetcode

    67 Add Binary 二进制加法leetcode 题目描述 方法1: 方法2: 题目描述 Given two binary strings a and b, return their sum a ...

  7. [LeetCode]67.Add Binary

    [题目] Given two binary strings, return their sum (also a binary string). For example, a = "11&qu ...

  8. 辣鸡刘的Leetcode之旅8【Add Binary,Sqrt(x),Merge Sorted Array】

    Add Binary 题目描述; Given two binary strings, return their sum (also a binary string). The input string ...

  9. LeetCode - Add Binary

    题目: Given two binary strings, return their sum (also a binary string). For example, a = "11&quo ...

  10. C#LeetCode刷题之#67-二进制求和(Add Binary)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3929 访问. 给定两个二进制字符串,返回他们的和(用二进制表示) ...

最新文章

  1. android receiver 通知,android – 来自BroadcastReceiver的呼叫通知
  2. c#百度排名点击器编写 及webser 填表.
  3. 面试了一个 46 岁的程序员,我思绪万千!
  4. lisp修改天正标高值_【求教】如何批量修改天正字体
  5. 计算机主机电池馈电,电脑主机电池没电引起故障怎么处理
  6. 将长度为n的绳子分为m段求各段乘积的最大值
  7. python 30分钟_一张图30分钟快速Python入门
  8. 如何快速学习freemarker以及使用经验
  9. POJ1733,jzoj1779-Parity game(奇偶游戏)【带权并查集,离散化】
  10. Hibernate最全面试题
  11. 怎么恢复初始状态_妊娠纹怎么消 这三种美食帮你去除妊娠纹
  12. 用html制作简易网页
  13. animals中文谐音_魔力红歌曲Aanimals中文谐音,就是音译歌词
  14. 小公司程序员怎么进大公司
  15. calc()语法规则
  16. Arduino + GP2D12红外测距传感器+LCD1602
  17. pmx转fbx的具体步骤
  18. catti二级笔译综合能力真题_CATTI二级笔译综合能力试题及答案.doc
  19. 打印机出现“错误-正在打印”的处理办法
  20. 2023南华大学计算机考研信息汇总

热门文章

  1. LaTEX、 Aurora、 markdown常用数学符号
  2. .NET开源工作流驰ccflow从表数据数据源导入设置
  3. Python机器学习--回归
  4. Centos 安装Docker
  5. String.format()方法使用说明
  6. 编译安装Ruby 1.9.3 安装CentOS
  7. 使用PHP读取和创建txt,doc,xls,pdf类型文件
  8. WinForm 异步调用方法
  9. c++ sendmessage 鼠标 坐标是相对自身吗_CAD大家都说会:这些知识不知道,你敢说会CAD吗?...
  10. Js作用域链及变量作用域