LeetCode 67. 二進制求和

二進制求和

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

輸入爲非空字符串且只包含數字 1 和 0。

示例 1:

輸入: a = “11”, b = “1”
輸出: “100”

示例 2:

輸入: a = “1010”, b = “1011”
輸出: “10101”

解題思路

對兩個字符串從後向前相加,每一位相加的結果,模2(%2)作爲結果添加到已有結果的前面,除以2(/2)作爲進位保存起來,用於下一位相加,一直到最長字符串的第一個字符相加完結束,返回結果即可。

AC代碼

public String addBinary(String a, String b) {
        int aLength = a.length();
        int bLength = b.length();
        int carry = 0;
        String result = "";
        while (aLength > 0 || bLength > 0) {
             if (aLength > 0) {
                 carry = carry + a.charAt(aLength - 1) - '0';
                 aLength--;
             }
             if (bLength > 0) {
                 carry = carry + b.charAt(bLength - 1) - '0';
                 bLength--;
             }
             result = (carry % 2) + result;
             carry = carry / 2;
        }
        if (carry > 0) {
            result = carry + result;
        }
        return result;
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章