思路好想:
模拟
位运算
所以我们的目的是我们尽量的简化代码。
我采用的方法是模拟。
代码如下:
class Solution {
public String addBinary(String a, String b) {
StringBuffer sb = new StringBuffer();
return helper(a,b,sb,0);
}
public String helper(String a,String b,StringBuffer sb,int ad){
int len1 = a.length();
int len2 = b.length();
if(len1==0&&len2==0){
if(ad!=0){
sb.insert(0,ad+"");
}
return sb.toString();
}
int a1 = len1==0?0:a.charAt(len1-1)-‘0‘;
int a2 = len2==0?0:b.charAt(len2-1)-‘0‘;
a = a.length()==0?a:a.substring(0,len1-1);
b = b.length()==0?b:b.substring(0,len2-1);
int advance = 0;
if(a1+a2+ad==3){
sb.insert(0,‘1‘);
advance = 1;
}else if(a1+a2+ad == 2){
sb.insert(0,‘0‘);
advance = 1;
}else if(a1+a2+ad==1||a1+a2+ad==0){
sb.insert(0,(a1+a2+ad)+"");
}
return helper(a,b,sb,advance);
}
}
原文:https://www.cnblogs.com/deusjin/p/13180316.html