191. Number of 1 Bits

Swift 3.0

//
//  E_191_NumberOf1Bits.swift
//  AlgorithmLeetCode
//
//  Created by okerivy on 2017/3/9.
//  Copyright ? 2017年 okerivy. All rights reserved.
//  https://leetcode.com/problems/number-of-1-bits

import Foundation



// MARK: - 題目名稱: 191. Number of 1 Bits

/* MARK: - 所屬類別:
 標(biāo)簽: Bit Manipulation
 
 相關(guān)題目:
  (E) Reverse Bits
  (E) Power of Two
  (M) Counting Bits
  (E) Binary Watch
  (E) Hamming Distance
 
 */

/* MARK: - 題目英文:
 Write a function that takes an unsigned integer and returns the number of ’1' bits it has (also known as the Hamming weight).
 
 For example, the 32-bit integer ’11' has binary representation 00000000000000000000000000001011, so the function should return 3.
 
 */


/* MARK: - 題目翻譯:
 編寫一個(gè)函數(shù)馆揉,它接收一個(gè)無符號(hào)整數(shù)并返回它二進(jìn)制形式中 '1'的個(gè)數(shù)(也稱為Hamming weight)窟赏。
 
 例如,整數(shù) ‘11’ 的32位二進(jìn)制表示形式為 00000000000000000000000000001011 型诚,所以函數(shù)應(yīng)當(dāng)返回3。
 
 */



/* MARK: - 解題思路:
 考慮位運(yùn)算
 
 設(shè)輸入的數(shù)為n徘六,把n與1做二進(jìn)制的與&(AND)運(yùn)算锄贼,即可判斷它的最低位是否為1。
 如果是的話注簿,把計(jì)數(shù)變量加一契吉。然后把n向右移動(dòng)一位,重復(fù)上述操作诡渴。
 當(dāng)n變?yōu)?時(shí)捐晶,終止算法,輸出結(jié)果妄辩。
 

 
 
 */


/* MARK: - 復(fù)雜度分析:
  時(shí)間復(fù)雜度:O(n) 空間復(fù)雜度:O(1)
 
 */


// MARK: - 代碼:
private class Solution {
    
    // 取模 整除
    func hammingWeight(_ n: UInt32) -> Int {
        
        // 傳進(jìn)來n為let類型 不能改變,所以搞個(gè)num變量
        var  num = n
        
        // 計(jì)數(shù)器
        var count = 0
        
        while num > 0 {
            // 把num與1做二進(jìn)制的與(AND)運(yùn)算惑灵,即可判斷它的最低位是否為1
            if num & 1 == 1 {
                count += 1
            }
            
            // 右移一位 相當(dāng)于 / 2  public func >>=(lhs: inout UInt32, rhs: UInt32)
            num >>= 1
        }
    
        return count;
    }

    // 取模 整除
    func hammingWeight2(_ n: UInt32) -> Int {
        
        // 傳進(jìn)來n為let類型 不能改變,所以搞個(gè)num變量
        var  num = n
        
        // 計(jì)數(shù)器
        var count = 0
        
        while num > 0 {
            count += 1
            
            // x & (x - 1) 它會(huì)把整數(shù)x的二進(jìn)制的最后一個(gè)1去掉。
            num &= (num - 1)
        }
        
        return count;
    }
    
}



// MARK: - 測(cè)試代碼:
func numberOf1Bits() {
    
    print(Solution().hammingWeight(0))
    print(Solution().hammingWeight(1))
    print(Solution().hammingWeight(2))
    print(Solution().hammingWeight(8))
    print(Solution().hammingWeight(11))
    print(Solution().hammingWeight(7))
}








最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末眼耀,一起剝皮案震驚了整個(gè)濱河市英支,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌哮伟,老刑警劉巖干花,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件妄帘,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡把敢,警方通過查閱死者的電腦和手機(jī)寄摆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來修赞,“玉大人婶恼,你說我怎么就攤上這事“馗保” “怎么了勾邦?”我有些...
    開封第一講書人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)割择。 經(jīng)常有香客問我眷篇,道長(zhǎng),這世上最難降的妖魔是什么荔泳? 我笑而不...
    開封第一講書人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任蕉饼,我火速辦了婚禮,結(jié)果婚禮上玛歌,老公的妹妹穿的比我還像新娘昧港。我一直安慰自己,他們只是感情好支子,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開白布创肥。 她就那樣靜靜地躺著,像睡著了一般值朋。 火紅的嫁衣襯著肌膚如雪叹侄。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,185評(píng)論 1 284
  • 那天昨登,我揣著相機(jī)與錄音趾代,去河邊找鬼。 笑死丰辣,一個(gè)胖子當(dāng)著我的面吹牛稽坤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播糯俗,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼尿褪,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了得湘?” 一聲冷哼從身側(cè)響起杖玲,我...
    開封第一講書人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎淘正,沒想到半個(gè)月后摆马,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體臼闻,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評(píng)論 2 325
  • 正文 我和宋清朗相戀三年囤采,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了述呐。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,163評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蕉毯,死狀恐怖乓搬,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情代虾,我是刑警寧澤进肯,帶...
    沈念sama閱讀 33,803評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站棉磨,受9級(jí)特大地震影響江掩,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜乘瓤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評(píng)論 3 307
  • 文/蒙蒙 一环形、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧衙傀,春花似錦斟赚、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽任洞。三九已至蓄喇,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間交掏,已是汗流浹背妆偏。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留盅弛,地道東北人钱骂。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像挪鹏,于是被迫代替她去往敵國(guó)和親见秽。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344

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