概述
给定两个二进制字符串,返回他们的和(用二进制表示)。
输入为非空字符串且只包含数字 1
和 0
。
示例 1:
输入: a = "11", b = "1" 输出: "100"
示例 2:
输入: a = "1010", b = "1011" 输出: "10101"
class Solution {
public:
string addBinary(string a, string b) {
int i=a.length()-1,j=b.length()-1;
if(i<j) //让2个字符串等长(即短的字符串高位补0)
{
for(int p=j-i;p>0;p--)
a='0'+a;
i=j;
}
else
{
for(int p=i-j;p>0;p--)
b='0'+b;
}
string s;
int flag=0;
while(i>=0) //从最后一位开始判断,设置一个标志进位flag
{ //依据a[i]、b[i]和flag进行对应操作
if(a[i]=='1'&& b[i]=='1')
{
if(flag==1)
s='1'+s;
else
{
s='0'+s;
flag=1;
}
}
else
{
if((a[i] == '1' && b[i] == '0') || (a[i]=='0'&& b[i]=='1'))
{
if(flag==1)
s='0'+s;
else
s='1'+s;
}
else //if(a[i]=='0' &&b[j]=='0')
{
if(flag==1)
{
s='1'+s;
flag=0;
}
else
s='0'+s;
}
}
i--;
}
if(flag==1) //循环结束后仍需要判断下是否有进位
s='1'+s;
return s;
}
};
最后
以上就是真实荷花为你收集整理的67. 二进制求和的全部内容,希望文章能够帮你解决67. 二进制求和所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复