leetcode67-二進位制求和
阿新 • • 發佈:2018-11-30
給定兩個二進位制字串,返回他們的和(用二進位制表示)。
輸入為非空字串且只包含數字 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