题目来源:leetcode
/**
* Created by a819 on 2017/8/10.
*/
public class AddBinary {
public String addBinary(String a, String b) {
a=new StringBuilder(a).reverse().toString();
b=new StringBuilder(b).reverse().toString();
System.out.println(a);
System.out.println(b);
int flag=0;//进位标志
int cur=0;//当前为的结果
int len=0;//相同位数的长度
StringBuilder result=new StringBuilder();
//int len=?b.length():a.length();
if (a.length()>=b.length()) {
int i=0;
len=b.length();
for (i = 0; i <len; i++) {
cur = (a.charAt(i) - '0') + (b.charAt(i) - '0') + flag;
if (cur <= 1) {
result.append(cur);
flag = 0;
} else {
result.append(cur % 2);
flag = 1;
}
}
while (i<a.length()){
cur=a.charAt(i)-'0'+flag;
if (cur <= 1) {
result.append(cur);
flag = 0;
} else {
result.append(cur % 2);
flag = 1;
}
i++;
}
if (flag==1)
result.append(1);
}//如果b长
else {
int i=0;
len=a.length();
for (i = 0; i < len; i++) {
cur = (a.charAt(i) - '0') + (b.charAt(i) - '0') + flag;
if (cur <= 1) {
result.append(cur);
flag = 0;
} else {
cur %=2;
result.append(cur);
flag = 1;
}
}
while (i<b.length()){
cur=b.charAt(i)-'0'+flag;
if (cur <= 1) {
result.append(cur);
flag = 0;
} else {
cur %= 2;
result.append(cur);
flag = 1;
}
i++;
}
if (flag==1)
result.append(1);
}
return result.reverse().toString();
}
public static void main(String[] args) {
AddBinary ad=new AddBinary();
System.out.println(ad.addBinary("0","0"));
}
}