给定两个二进制字符串,返回他们的和(用二进制表示)。
输入为非空字符串且只包含数字 1 和 0。
示例 1:
输入: a = “11”, b = “1”
输出: “100”
示例 2:
输入: a = “1010”, b = “1011”
输出: “10101”
class Solution {
public String addBinary(String a, String b) {
String ans = "";
int apos = a.length()-1,bpos = b.length()-1,atemp,btemp,abtemp,flag=0;
while(apos>=0&&bpos>=0) {
atemp = Integer.parseInt(a.charAt(apos)+"");
btemp = Integer.parseInt(b.charAt(bpos)+"");
abtemp = atemp+btemp+flag;
if(abtemp>=2) {
ans = (abtemp-2)+ans;
flag = 1;
}
else {
ans = (abtemp)+ans;
flag = 0;
}
--apos;
--bpos;
}
if(flag == 0) {
if(apos<0&&bpos<0) {
}
else if(apos<0)
ans = b.substring(0,bpos+1)+ans;
else if(bpos<0)
ans = a.substring(0,apos+1)+ans;
}
else {
if(apos<0&&bpos<0)
ans = "1"+ans;
else if(apos<0) {
while(bpos>=0) {
btemp = Integer.parseInt(b.charAt(bpos)+"");
abtemp = btemp+flag;
if(abtemp>=2) {
ans = (abtemp-2)+ans;
flag = 1;
}
else {
ans = (abtemp)+ans;
flag = 0;
}
--bpos;
}
if(flag!=0) ans = "1"+ans;
}
else if(bpos<0) {
while(apos>=0) {
atemp = Integer.parseInt(a.charAt(apos)+"");
abtemp = atemp+flag;
if(abtemp>=2) {
ans = (abtemp-2)+ans;
flag = 1;
}
else {
ans = (abtemp)+ans;
flag = 0;
}
--apos;
}
if(flag!=0) ans = "1"+ans;
}
}
return ans;
}
}