//leetcode67 二进制数相加
public static void main(String argv[]){
String a="1111";
String b="1111";
System.out.println(addBinary(a,b));
}
public static String addBinary(String a, String b) {
String c="";
int alen=a.length();
int blen=b.length();
int flag=0;
String pp="";
//位数不同,给字符串补0
if(alen>blen){//给b补0
int ablen=alen-blen;
for(int p=0;p<ablen;p++){
pp=pp+"0";
}
b=pp+b;
blen=alen;
}else{
int ablen=blen-alen;
for(int p=0;p<ablen;p++){
pp=pp+"0";
}
a=pp+a;
alen=blen;
}
public static void main(String argv[]){
String a="1111";
String b="1111";
System.out.println(addBinary(a,b));
}
public static String addBinary(String a, String b) {
String c="";
int alen=a.length();
int blen=b.length();
int flag=0;
String pp="";
//位数不同,给字符串补0
if(alen>blen){//给b补0
int ablen=alen-blen;
for(int p=0;p<ablen;p++){
pp=pp+"0";
}
b=pp+b;
blen=alen;
}else{
int ablen=blen-alen;
for(int p=0;p<ablen;p++){
pp=pp+"0";
}
a=pp+a;
alen=blen;
}
String[] aa=a.split("");
String[] bb=b.split("");
int i=alen-1;
while(alen !=0 && blen!=0){
if((aa[i].equals("1") && bb[i].equals("0")) || (aa[i].equals("0") && bb[i].equals("1"))){
if(flag==0){
c="1"+c;
}else{
c="0"+c;//flag 不变
}
}else if(aa[i].equals("1") && bb[i].equals("1")){
if(flag==0){
c="0"+c;
flag++;
}else{
c="1"+c;//flag 不变
}
}else {//0+0的情况
if(flag==0){
c="0"+c;
}else{
c="1"+c;
flag--;
}
}
i--;
alen--;
blen--;
}
while(flag !=0){
flag--;
c="1"+c;
}
return c;
}
String[] bb=b.split("");
int i=alen-1;
while(alen !=0 && blen!=0){
if((aa[i].equals("1") && bb[i].equals("0")) || (aa[i].equals("0") && bb[i].equals("1"))){
if(flag==0){
c="1"+c;
}else{
c="0"+c;//flag 不变
}
}else if(aa[i].equals("1") && bb[i].equals("1")){
if(flag==0){
c="0"+c;
flag++;
}else{
c="1"+c;//flag 不变
}
}else {//0+0的情况
if(flag==0){
c="0"+c;
}else{
c="1"+c;
flag--;
}
}
i--;
alen--;
blen--;
}
while(flag !=0){
flag--;
c="1"+c;
}
return c;
}