力扣面试150题--二进制求和

Day 88

题目描述

思路

复习一下二进制加法,利用jin来记录是否有进位,先对两个字符串进行相加,直到一个字符串加完了,单独处理剩下的那个字符串。

java 复制代码
class Solution {
 public static String addBinary(String a, String b) {
        int i1=a.length()-1;
        int i2=b.length()-1;
        int jin=0;
        StringBuilder res=new StringBuilder();
        while(i1>=0&&i2>=0){
            char x=a.charAt(i1);
            char y=b.charAt(i2);
            int sum=(x-'0')+(y-'0')+jin;
            res.append(sum%2);
            jin=sum/2;
            i1--;
            i2--;
        }
        while(i1>=0){
            char x=a.charAt(i1);
            int sum=(x-'0')+jin;
            res.append(sum%2);
            jin=sum/2;
            i1--;
        }
        while (i2>=0){
            char x=b.charAt(i2);
            int sum=(x-'0')+jin;
            res.append(sum%2);
            jin=sum/2;
            i2--;
        }
        if(jin==1){
            res.append('1');
        }
        return res.reverse().toString();
}
}