力扣-1.4-67

在这里插入图片描述
方法一:

class Solution {
    
    
    public String addBinary(String a, String b) {
    
    
        int len1 = a.length();
        int len2 = b.length();
        int len = len1 <= len2 ? len1 : len2;
        a = new StringBuffer(a).reverse().toString();
        b = new StringBuffer(b).reverse().toString();
        StringBuffer sb = new StringBuffer();
        int temp = 0;
        for (int i = 0; i < len; i++) {
    
    
            int sum = a.charAt(i) + b.charAt(i) - 2 * '0' + temp;
            if (sum >= 2) {
    
    
                temp = 1;
                sb.append(sum - 2);
            } else {
    
    
                temp = 0;
                sb.append(sum);
            }
        }
        if (len1 >= len2) {
    
    
            for (int i = len; i < len1; i++) {
    
    
                int sum = temp + a.charAt(i) - '0';
                if (sum >= 2) {
    
    
                    temp = 1;
                    sb.append(sum - 2);
                } else {
    
    
                    temp = 0;
                    sb.append(sum);
                }
            }
            if (temp == 1) {
    
    
                sb.append(1);
            }
        } else {
    
    
            for (int i = len; i < len2; i++) {
    
    
                int sum = temp + b.charAt(i) - '0';
                if (sum >= 2) {
    
    
                    temp = 1;
                    sb.append(sum - 2);
                } else {
    
    
                    temp = 0;
                    sb.append(sum);
                }
            }
            if (temp == 1) {
    
    
                sb.append(1);
            }
        }
        return sb.reverse().toString();
    }
}

方法二:

class Solution {
    
    
    public String addBinary(String a, String b) {
    
    
        int len1 = a.length() - 1;
        int len2 = b.length() - 1;
        StringBuffer sb = new StringBuffer();
        int carry = 0;
        while (carry == 1 || len1 >= 0 || len2 >= 0) {
    
    
            if(len1 >= 0 && a.charAt(len1--) == '1') {
    
    
                carry++;
            }
            if(len2 >= 0 && b.charAt(len2--) == '1') {
    
    
                carry++;
            }
            sb.append(carry % 2);
            carry = carry / 2;
        }
        return sb.reverse().toString();
    }
}

猜你喜欢

转载自blog.csdn.net/Desperate_gh/article/details/112185950