概述
题目: Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100"
.
思路:二进制加法和普通加法的思路没什么差别,甚至更简单。所需要注意的细节就是进位。从最低位开始,进位可能伴随计算直到最高位。所以每一位的加法运算都要将上一次的进位加进去。
对于某一位a和b,上一为的进位c,该为求和之后的和是(a+b+c)%2,进位是(a+b+c)/2。
代码:
class Solution {
public:
string addBinary(string a, string b) {
if(a.empty() || a == "0")
return b;
else if(b.empty() || b == "0")
return a;
string sum = ""; //sum记录和
int la,lb,c;
la = a.length()-1;
lb = b.length()-1;
c = 0; //c记录进位
while(la>=0 && lb>=0)
{
int tmp = a[la] - '0' + b[lb] - '0' + c;
c = tmp/2;
sum = (char)('0'+ tmp%2) + sum;
la--;
lb--;
}
//如果比较长的一方还有剩余
while(la>=0)
{
int tmp = a[la] - '0' + c;
c = tmp/2;
sum = (char)('0' + tmp%2) + sum;
la--;
}
while(lb>=0)
{
int tmp = b[lb] - '0' + c;
c = tmp/2;
sum = (char)('0' + tmp%2) + sum;
lb--;
}
//如果最高位需要进位
if(c == 1)
sum = "1" + sum;
return sum;
}
};
最后
以上就是俊逸衬衫为你收集整理的二进制加法的实现(字符串形式) Add Binary的全部内容,希望文章能够帮你解决二进制加法的实现(字符串形式) Add Binary所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复