class Solution{
public String addBinary(String a,String b){
int carry = 0; // 保存进位
int sum = 0; // 存储进位与两个位之间的和
int opa = 0;
int opb = 0;
StringBuilder res = new StringBuilder();
//将两个二进制数位补齐,在短的前面添0
while(a.length() != b.length()){
if(a.length() > b.length()){
b = "0" + b;
}else{
a = "0" + a;
}
}
//从后往前做加法
for(int i = a.length()-1;i>=0;i--){
opa = a.charAt(i) - '0'; //String a 中的字符的ASCII码值与‘0’字符的差值
opb = b.charAt(i) - '0'; //String b 中的字符的ASCII码值与‘0’字符的差值
sum = opa + opb + carry;
if(sum >=2){
carry = 1;
res.append((sum-2));
}else{
carry = 0;
res.append(sum);
}
}
if(carry == 1){
res.append("1");
}
return res.reverse().toString();
}
}
public class addBinary {
public static void main(String[] args) {
String a = "11";
String b = "1";
String res = new Solution().addBinary(a, b);
System.out.print(res);
}
}
java实现二进制的加法
第一步:将两个二进制数位补齐,在短的前面添0
第二步:从后往前做加法
第三步:将结果中的字符串反转
注意:此时需要用到StringBuilder ,用到append()方法。 StringBuffer类中的方法主要偏重于对于字符串的变化,例如追加、插入和删除等,这个也是StringBuffer和String类的主要区别。
代码如下:
版权声明:本文为pjjp_0309原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。