Leetcode 67.Add Binary

題目


Add Binary

題目大意:給定兩個二進(jìn)制數(shù)的字符串字符串,返回它們的和的二進(jìn)制字符串。

開始的思路是將二進(jìn)制轉(zhuǎn)換成十進(jìn)制相加,再把和轉(zhuǎn)換成二進(jìn)制,結(jié)果輸入為

"10100000100100110110010000010101111011011001101110111111111101000000101111001110001111100001101"

"110101001011101110001111100110001010100001101011101010000011011011001011101111001100000011011110011"

很自然地就溢出了,最后只能手動模擬相加過程。

代碼如下

public class Solution {
    public String addBinary(String a, String b) {
        String restr = "";//儲存相加的結(jié)果(倒序)
        int length = a.length()>b.length()?a.length():b.length();//較長字符串長度
        //在較短字符串前加0,使兩個字符串一樣長
        String chang = "";
        for (int i = 0;i<(a.length()>b.length()?a.length():b.length())-(a.length()<b.length()?a.length():b.length());i++)
            chang = chang + 0;
        if (a.length()>b.length()){
            chang = chang + b;
            b = chang;
        }
        else {
            chang = chang + a;
            a = chang;
        }
        int adc = 0;//儲存進(jìn)位
        //手動模擬相加
        for (int i=0;i<length;i++){
            if(a.charAt(length-i-1) + b.charAt(length-i-1) + adc - 2 * '0' == 3){
                adc = 1;
                restr = restr + 1;
            }
            else if (a.charAt(length-i-1) + b.charAt(length-i-1) + adc - 2 * '0' == 2){
                adc = 1;
                restr = restr + 0;
            }
            else if (a.charAt(length-i-1) + b.charAt(length-i-1) + adc - 2 * '0' == 1){
                adc = 0;
                restr = restr + 1;
            }
            else if (a.charAt(length-i-1) + b.charAt(length-i-1) + adc - 2 * '0' == 0){
                adc = 0;
                restr = restr + 0;
            }
        }
        //當(dāng)進(jìn)位為1說明結(jié)果還要加1
        if (adc == 1)
            restr = restr + 1;
        //將倒序的結(jié)果順序變?yōu)檎?        String str = "";
        for (int i=0;i<restr.length();i++)
            str = str + restr.charAt(restr.length()-i-1);
        return str;
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容