概述
Add Binary(二进制相加)
【难度:Easy】
Given two binary strings, return their sum (also a binary string).
For example,
a = “11”
b = “1”
Return “100”.
给定两个二进制数的字符串,以字符串形式返回他们的和。
如:
a = “11”
b = “1”
return “100”
解题思路
高精度加法的变型题,采用的方法是从字符串末尾开始相加,由于二进制加法的情况较少,因此可以针对不同的情况来采取措施。
c++代码如下:
class Solution {
public:
string addBinary(string a, string b) {
if (a == "")
return b;
if (b == "")
return a;
int j = b.length()-1;
int i = a.length()-1;
char carry = '0';
string ans = "";
for (; i >= 0 && j >= 0; i--,j--) {
if (a[i] == '1' && b[j] == '1') {
ans = carry + ans;
carry = '1';
} else if (a[i] == '0' && b[j] == '0'){
ans = carry + ans;
carry = '0';
} else {
if (carry == '1') {
ans = '0' + ans;
carry = '1';
} else {
ans = '1' + ans;
carry = '0';
}
}
}
if (i >= 0) {
for (i; i >= 0; i--) {
if (carry == '1' && a[i] == '1') {
ans = '0' + ans;
carry = '1';
} else if (carry == '0') {
ans = a[i] + ans;
} else {
ans = carry + ans;
carry = '0';
}
}
} else if (j >= 0) {
for (j; j >= 0; j--) {
if (carry == '1' && b[j] == '1') {
ans = '0' + ans;
carry = '1';
} else if (carry == '0') {
ans = b[j] + ans;
} else {
ans = carry + ans;
carry = '0';
}
}
}
if (carry == '1')
ans = '1' + ans;
return ans;
}
};
最后
以上就是香蕉红酒为你收集整理的[LeetCode]67 二进制相加的全部内容,希望文章能够帮你解决[LeetCode]67 二进制相加所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复