题目
给你两个二进制字符串,返回它们的和(用二进制表示)。
输入为 非空 字符串且只包含数字 1 和 0。
示例
输入: a = “11”, b = “1”
输出: “100”
示例 2:
输入: a = “1010”, b = “1011”
输出: “10101”
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/add-binary
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
方法1:模拟
Python实现
class Solution:
def addBinary(self, a: str, b: str) -> str:
if len(a)<len(b):
a,b=b,a
for i in range(len(a)-len(b)):
b='0'+b
na,nb=len(a),len(b)
i,j=na-1,nb-1
res=str()
var,flag=0,0
while(i>-1 and j>-1):
var=int(a[i])+int(b[j])+flag
if var==0:
res+='0'
flag=0
i-=1
j-=1
elif var==1:
res+='1'
flag=0
i-=1
j-=1
elif var==2:
res+='0'
flag=1
i-=1
j-=1
elif var==3:
res+='1'
flag=1
i-=1
j-=1
if flag != 0:
res += str(flag)
return(res[::-1])
Java实现
class Solution {
public String addBinary(String a, String b) {
int i = a.length() - 1;
int j = b.length() - 1;
int add = 0;
StringBuffer res = new StringBuffer();
while (add != 0 || i >= 0 || j >= 0) {
int var1 = i >= 0 ? (a.charAt(i--) - '0') : 0;
int var2 = j >= 0 ? (b.charAt(j--) - '0') : 0;
int var = add + var1 + var2;
if (var == 0) {
res.append("0");
add = 0;
} else if (var == 1) {
res.append("1");
add = 0;
} else if (var == 2) {
res.append("0");
add = 1;
} else if (var == 3) {
res.append("1");
add = 1;
}
}
res.reverse();
return res.toString();
}
}