国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

力扣67. 二進制求和算法

這篇具有很好參考價值的文章主要介紹了力扣67. 二進制求和算法。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

力扣67. 二進制求和算法,技術(shù)積累,sre,devops,python,leetcode,算法

一、【寫在前面】

這道題需要,給你兩個字符串比如

a = "1010", b = "1011"

答案是:"10101"

然后需要你給出計算結(jié)果,那么我們很容易想到兩種做法

1. 調(diào)庫做法:直接轉(zhuǎn)化為整數(shù),然后用內(nèi)置函數(shù)做進制轉(zhuǎn)換直接計算出結(jié)果

2. 計算做法:將十進制思維移植過來,對每一位加并且做carry操作,最后得出結(jié)果

筆者最初是這么做的,不過這樣出來的時間和空間復雜度比較差勁,看到了一種非常巧妙的方法,這里分享給大家。

二、【代碼給出】

我把注釋寫的全一點,這樣:這個算法的本質(zhì)就是不斷重復無進位加,直到carryflag沒有信息為止。

舉個例子,這個例子最后計算出來是1100011

101011 + 111000

首先做無進位加(與),得到:ans = '0b10011' ;carry = 010011 << 1 = '0b1010000'

ans和carry繼續(xù)做無進位加,得到:ans = '0b1000011' ; carry =?10000 << 1 = '0b100000'

繼續(xù)重復 ans =?'0b1100011';carry = 0 << 1 = '0b0'文章來源地址http://www.zghlxwxcb.cn/news/detail-795266.html

class Solution:
    def addBinary(self, a: str, b: str) -> str:
        # carry_flags = 0b0000 # carry_flag 形如xxflag的這種形式會在接觸到底層時大量看見
        a , b =int(a,2),int(b,2) # 先做進制轉(zhuǎn)換,轉(zhuǎn)到二進制
        # 預計算一下ans和carry
        # 為什么要用異或,因為異或可以視為沒有進位的加法
        # 然后把進位信息存到carryflag中,直接做“與”,同1為1,然后左移一位,剛好可以作為進位,是不是很巧妙
        ans , carry_flags = a^b ,  (a&b) << 1    
        while carry_flags:    # 然后就是不斷重復carry和ans的無進位加,直到?jīng)]有進位信息,加法就完成了
            temp_ans =  ans ^ carry_flags
            carry_flags = (ans&carry_flags) << 1
            ans = temp_ans
        return bin(ans)[2::]    # 直接返回會有0b1111,可以類比0xfff,所以需要切掉前面兩個字符

到了這里,關(guān)于力扣67. 二進制求和算法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【LeetCode】67. 二進制求和

    難度:簡單 給你兩個二進制字符串 a 和 b ,以二進制字符串的形式返回它們的和。 示例 1: 示例 2: 提示: 1 = a.length, b.length = 10^4 a 和 b 僅由字符 \\\'0\\\' 或 \\\'1\\\' 組成 字符串如果不是 \\\"0\\\" ,就不含前導零 思路: 從后往前遍歷字符逐個判斷即可 最后考慮是否進位 sum 1 等價于 sum

    2024年02月05日
    瀏覽(86)
  • Leetcode67 二進制求和

    Leetcode67 二進制求和

    給你兩個二進制字符串? a ?和? b ?,以二進制字符串的形式返回它們的和。 ? ? ?代碼 ?

    2024年02月11日
    瀏覽(89)
  • LeetCode_字符串_簡單_67.二進制求和

    給你兩個二進制字符串 a 和 b,以二進制字符串的形式返回它們的和。 示例 1: 輸入:a = “11”, b = “1” 輸出:“100” 示例 2: 輸入:a = “1010”, b = “1011” 輸出:“10101” 提示: 1 = a.length, b.length = 10 4 a 和 b 僅由字符 ‘0’ 或 ‘1’ 組成 字符串如果不是 “0” ,就不含前

    2024年02月09日
    瀏覽(33)
  • 代碼訓練LeetCode(12)二進制求和

    代碼訓練LeetCode(12)二進制求和

    Author: Once Day Date: 2024年3月14日 一位熱衷于Linux學習和開發(fā)的菜鳥,試圖譜寫一場冒險之旅,也許終點只是一場白日夢… 漫漫長路,有人對你微笑過嘛… 全系列文章可參考專欄: 十年代碼訓練_Once-Day的博客-CSDN博客 參考文章: 67. 二進制求和 - 力扣(LeetCode) 力扣 (LeetCode) 全球極

    2024年03月20日
    瀏覽(93)
  • Python每日一練(20230420) 數(shù)組逐位判斷、交錯字符串、二進制求和

    Python每日一練(20230420) 數(shù)組逐位判斷、交錯字符串、二進制求和

    目錄 1. 數(shù)組逐位判斷???? 2. 交錯字符串?????? 3. 二進制求和???? ?? 每日一練刷題專欄??? Golang每日一練 專欄 Python每日一練 專欄 C/C++每日一練 專欄 Java每日一練 專欄 比如有以下數(shù)組: a1: 1,0,0,1,0,0,0,1 a2: 0,0,0,0,1,1,1,1 a3: 0,1,0,1,0,1,0,0 a4: 1,0,1,1,1,1,0,0 a5: ....... 抓取三個數(shù)

    2024年02月15日
    瀏覽(90)
  • 力扣(leetcode)第696題計數(shù)二進制字串(Python)

    題目鏈接:696.計數(shù)二進制字串 給定一個字符串 s,統(tǒng)計并返回具有相同數(shù)量 0 和 1 的非空(連續(xù))子字符串的數(shù)量,并且這些子字符串中的所有 0 和所有 1 都是成組連續(xù)的。 重復出現(xiàn)(不同位置)的子串也要統(tǒng)計它們出現(xiàn)的次數(shù)。 示例 1: 輸入:s = “00110011” 輸出:6 解釋

    2024年01月20日
    瀏覽(18)
  • 二進制算法題+回文鏈表

    先計算兩個字符串公共的部分,需要維護三個變量:兩個數(shù)組的指針idx+一個進位變量up 注意,這里用StringBuffer來存儲結(jié)果,先存儲的是個位,所以最后需要reverse一下。 21分鐘 如何看一個字符是否在變化?維護一個temp變量來記錄他上一次的結(jié)果。 模擬十進制轉(zhuǎn)二進制:先對

    2024年02月07日
    瀏覽(86)
  • Python讀取二進制文件:深入解析與技術(shù)實現(xiàn)

    Python讀取二進制文件:深入解析與技術(shù)實現(xiàn)

    目錄 一、引言 二、二進制文件的基礎(chǔ) 1、二進制文件的組成 2、二進制文件的編碼 三、Python讀取二進制文件的方法 1、使用內(nèi)置函數(shù)open() 2、使用numpy庫 四、處理讀取的二進制數(shù)據(jù) 1、解析數(shù)據(jù) 2. 轉(zhuǎn)換數(shù)據(jù)類型 五、總結(jié)與展望 1、高效讀取二進制文件 2、處理復雜的二進制文件

    2024年02月04日
    瀏覽(32)
  • [滲透測試]—7.4 逆向工程和二進制破解技術(shù)

    [滲透測試]—7.4 逆向工程和二進制破解技術(shù)

    在本章節(jié)中,我們將深入學習逆向工程和二進制破解技術(shù)。我們將盡量詳細、通俗易懂地講解,并提供盡可能多的實例。 逆向工程是指從軟件的二進制文件中提取信息,以了解其工作原理和設(shè)計思路的過程。逆向工程的主要目的是對軟件進行分析、調(diào)試、修改等操作,以實現(xiàn)

    2024年02月11日
    瀏覽(24)
  • 深入解析位運算算法:探索數(shù)字的二進制秘密

    位運算是計算機科學中的重要概念,用于在二進制數(shù)字層面進行各種操作。本文將深入介紹位運算的基本操作,以及它在判斷、計算和處理數(shù)字中的應(yīng)用,包括判斷2的冪次方、位圖法、位掩碼和尋找缺失數(shù)字等。 位操作是通過對數(shù)字的二進制表示進行操作,實現(xiàn)各種功能。

    2024年02月11日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包