1. 程式人生 > >leetcode67-二進位制求和

leetcode67-二進位制求和

給定兩個二進位制字串,返回他們的和(用二進位制表示)。

輸入為非空字串且只包含數字 1 和 0

示例 1:

輸入: a = "11", b = "1"
輸出: "100"

示例 2:

輸入: a = "1010", b = "1011"
輸出: "10101"

 

根據二進位制的相加規則,當前位相加再%2則為結果,進位則/2。可以先建立一個StringBuilder型別的result,從後往前,將每一位相加,結果加入result,最後反轉輸出。

public String addBinary(String a, String b) {
    StringBuilder result = new StringBuilder();
    int m = a.length() - 1;
    int n = b.length() - 1;
    int carry = 0;
    while(m >= 0 || n >= 0){
        int sum = carray;
        if(m >= 0){
            sum += result.append(a.charAt(m) - '0');
            m--;
        }
        if(n >= 0){
            sum += result.append(b.charAt(n) - '0');
            n--;        
        }
        result.append(sum % 2);
        carry = sum / 2;
    }
    if(carry != 0){
        result.append(1);
    }
    return result.reverse().toString();        
}

參考:https://blog.csdn.net/qq_37429553/article/details/80726246