给定两个 01 字符串 a
和 b
,请计算它们的和,并以二进制字符串的形式输出。
输入为 非空 字符串且只包含数字 1
和 0
。
示例 1:
输入: a = "11", b = "10" 输出: "101"
示例 2:
输入: a = "1010", b = "1011" 输出: "10101"
使用模拟的方法,使用String的charAt()方法,一个一个相加
重点:将String类型反转的方法是将String转成StringBuffer然后利用StringBuffer的reverse方法,然后再利用toString返回:return new StringBuffer(str).reverse().toString();
class Solution {
public String addBinary(String a, String b) {
int l1=a.length();
int l2=b.length();
int l3=Math.max(l1,l2);
int carry=0;
int i=0;
String str="";
while(i<l3 || carry >0){
int k1=0,k2=0;
if(l1>0){
k1=Integer.parseInt(a.charAt(l1-1)+"");
}
if(l2>0){
k2=Integer.parseInt(b.charAt(l2-1)+"");
}
l1--;
l2--;
int k3=k1+k2+carry;
if(k3==0){
str+="0";
carry=0;
}else if(k3==1){
str+="1";
carry=0;
}else if(k3==2){
str+="0";
carry=1;
}else {
str+="1";
carry=1;
}
i++;
}
return new StringBuffer(str).reverse().toString();
}
}