LeetCode簡單題:67. 二進(jìn)制求和(Python,C++,Java)

一.解法

https://leetcode-cn.com/problems/add-binary/
要點:char的運算
Python采用暴力轉(zhuǎn)int然后相加轉(zhuǎn)二進(jìn)制
C++和Java則用模擬計算進(jìn)位郭卫,逢二進(jìn)一的方法
字符串中拿到每一個數(shù)字后
處理兩個字符串長度可能不一致砍聊,在短的前面添0
保存兩個數(shù)字之和用string,需要翻轉(zhuǎn)

二.Python實現(xiàn)

class Solution:
    def addBinary(self, a: str, b: str) -> str:

        return '{:b}'.format(int(a, 2) + int(b, 2))

三.C++實現(xiàn)

class Solution {
public:
    string addBinary(string a, string b) {
        int al = a.size();
        int bl = b.size();
        while(al < bl) //讓兩個字符串等長贰军,若不等長玻蝌,在短的字符串前補零,否則之后的操作會超出索引
        {
            a = '0' + a; al++;
        }
        while(al > bl)
        {
            b = '0' + b; bl++;
       
        }
        for(int j = a.size() - 1; j > 0; -- j) //從后到前遍歷所有的位數(shù)词疼,同位相加
        {
            a[j] = a[j] - '0' + b[j];
            if(a[j] >=  '2') //若大于等于字符‘2’俯树,需要進(jìn)一
            {
                a[j] = (a[j] - '0') % 2 + '0';
                a[j-1] = a[j-1] + 1;
            }
        }
        a[0] = a[0] - '0' + b[0]; //將ab的第0位相加
        if(a[0] >= '2') //若大于等于2,需要進(jìn)一
        {
            a[0] = (a[0] - '0') % 2 + '0';
            a = '1' + a;
        }
        return a;
    }
};

四.java實現(xiàn)

class Solution {
    public String addBinary(String a, String b) {
    //計算個位的位置
    int indexa = a.length() - 1;
    int indexb = b.length() - 1;
    //存儲計算結(jié)果
    StringBuilder res = new StringBuilder();
    //存儲進(jìn)位
    int carry = 0;
    for( ;indexa>=0||indexb>=0; indexa--,indexb--){
        //如果短字符串循環(huán)完了,就用0補位
        char valuea = indexa<0?'0':a.charAt(indexa);
        char valueb = indexb<0?'0':b.charAt(indexb);
        int sum = (valuea-'0') + (valueb-'0') + carry;
        res.append(sum % 2);
        carry = sum / 2;
    }
    //兩個字符串都遍歷完成后,判斷是仍否存在進(jìn)位
    if(carry>0){
        res.append(carry);
    }
    return res.reverse().toString();
}

}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末贰盗,一起剝皮案震驚了整個濱河市许饿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌舵盈,老刑警劉巖陋率,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件球化,死亡現(xiàn)場離奇詭異,居然都是意外死亡瓦糟,警方通過查閱死者的電腦和手機(jī)筒愚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來菩浙,“玉大人巢掺,你說我怎么就攤上這事【Ⅱ撸” “怎么了陆淀?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長先嬉。 經(jīng)常有香客問我倔约,道長,這世上最難降的妖魔是什么坝初? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任浸剩,我火速辦了婚禮,結(jié)果婚禮上鳄袍,老公的妹妹穿的比我還像新娘绢要。我一直安慰自己,他們只是感情好拗小,可當(dāng)我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布重罪。 她就那樣靜靜地躺著,像睡著了一般哀九。 火紅的嫁衣襯著肌膚如雪剿配。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天阅束,我揣著相機(jī)與錄音呼胚,去河邊找鬼。 笑死息裸,一個胖子當(dāng)著我的面吹牛蝇更,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播呼盆,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼年扩,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了访圃?” 一聲冷哼從身側(cè)響起厨幻,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后况脆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體平绩,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年漠另,在試婚紗的時候發(fā)現(xiàn)自己被綠了捏雌。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡笆搓,死狀恐怖性湿,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情满败,我是刑警寧澤肤频,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站算墨,受9級特大地震影響宵荒,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜净嘀,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一希俩、第九天 我趴在偏房一處隱蔽的房頂上張望吮播。 院中可真熱鬧沸柔,春花似錦勤讽、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至宵膨,卻和暖如春架谎,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背辟躏。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工谷扣, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人鸿脓。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓抑钟,卻偏偏與公主長得像,于是被迫代替她去往敵國和親野哭。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,044評論 2 355