Add Binary
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相关推荐
- LeetCode刷题记录4——67. Add Binary(easy)
LeetCode刷题记录4--67. Add Binary(easy) 目录 LeetCode刷题记录4--67. Add Binary(easy) 题目 语言 思路 后记 题目 今天这题是与字符串相 ...
- leetcode 67 Add Binary
Add Binary Total Accepted: 46815 Total Submissions: 189215 My Submissions Given two binary strings, ...
- java两个二进制数求和,Leetcode 67:Add Binary(二进制求和)
Leetcode 67:Add Binary(二进制求和) (python.java) Given two binary strings, return their sum (also a binar ...
- LeetCode: Add Binary 解题报告
Add Binary Given two binary strings, return their sum (also a binary string). For example, a = " ...
- LeetCode 67. Add Binary
67. Add Binary My Submissions QuestionEditorial Solution Total Accepted: 81992 Total Submissions: 29 ...
- 67. Add Binary 二进制加法leetcode
67 Add Binary 二进制加法leetcode 题目描述 方法1: 方法2: 题目描述 Given two binary strings a and b, return their sum a ...
- [LeetCode]67.Add Binary
[题目] Given two binary strings, return their sum (also a binary string). For example, a = "11&qu ...
- 辣鸡刘的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 ...
- LeetCode - Add Binary
题目: Given two binary strings, return their sum (also a binary string). For example, a = "11&quo ...
- C#LeetCode刷题之#67-二进制求和(Add Binary)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3929 访问. 给定两个二进制字符串,返回他们的和(用二进制表示) ...
最新文章
- android receiver 通知,android – 来自BroadcastReceiver的呼叫通知
- c#百度排名点击器编写 及webser 填表.
- 面试了一个 46 岁的程序员,我思绪万千!
- lisp修改天正标高值_【求教】如何批量修改天正字体
- 计算机主机电池馈电,电脑主机电池没电引起故障怎么处理
- 将长度为n的绳子分为m段求各段乘积的最大值
- python 30分钟_一张图30分钟快速Python入门
- 如何快速学习freemarker以及使用经验
- POJ1733,jzoj1779-Parity game(奇偶游戏)【带权并查集,离散化】
- Hibernate最全面试题
- 怎么恢复初始状态_妊娠纹怎么消 这三种美食帮你去除妊娠纹
- 用html制作简易网页
- animals中文谐音_魔力红歌曲Aanimals中文谐音,就是音译歌词
- 小公司程序员怎么进大公司
- calc()语法规则
- Arduino + GP2D12红外测距传感器+LCD1602
- pmx转fbx的具体步骤
- catti二级笔译综合能力真题_CATTI二级笔译综合能力试题及答案.doc
- 打印机出现“错误-正在打印”的处理办法
- 2023南华大学计算机考研信息汇总
热门文章
- LaTEX、 Aurora、 markdown常用数学符号
- .NET开源工作流驰ccflow从表数据数据源导入设置
- Python机器学习--回归
- Centos 安装Docker
- String.format()方法使用说明
- 编译安装Ruby 1.9.3 安装CentOS
- 使用PHP读取和创建txt,doc,xls,pdf类型文件
- WinForm 异步调用方法
- c++ sendmessage 鼠标 坐标是相对自身吗_CAD大家都说会:这些知识不知道,你敢说会CAD吗?...
- Js作用域链及变量作用域