Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100"
.
二进制,Java这个字符串操作好犹豫,直接用String加减能好看点儿
public class Solution {
public String addBinary(String a, String b) {
StringBuilder sb = new StringBuilder();
char[] chars = new char[Math.max(a.length(), b.length())+1];
int flag =0;
int min = Math.min(a.length(), b.length());
int index = chars.length-1;
for(int i=a.length()-1,j=b.length()-1;i>=0&&j>=0;i--,j--){
chars[index--]=(char) ((a.charAt(i)-'0'+b.charAt(j)-'0'+flag)%2+'0');
flag=(a.charAt(i)-'0'+b.charAt(j)-'0'+flag)/2;
}
if(a.length()>b.length()){
for(int i=a.length()-b.length()-1;i>=0;i--){
chars[index--]=(char) ((a.charAt(i)-'0'+flag)%2+'0');
flag=(a.charAt(i)-'0'+flag)/2;
}
}else {
for(int i=b.length()-a.length()-1;i>=0;i--){
chars[index--]=(char) ((b.charAt(i)-'0'+flag)%2+'0');
flag=(b.charAt(i)-'0'+flag)/2;
}
}
if(flag==1)
chars[index]='1';
else
index++;
for(int i=index;i<chars.length;i++){
sb.append(chars[i]);
}
return sb.toString();
}
}