LeetCode #383. Ransom Note

LeetCode #383. Ransom Note

題目:勒索信,如果信上的英文字母都能從雜誌上剪下則判斷為真,無法從雜誌剪下則判斷為否。

解題大意:將信件與雜誌的英文字母比對26個英文字母表,並記錄出現次數,信件字母出現次數小於或等於雜誌則判斷為真。

 

...繼續閱讀 »

LeetCode #338. Counting Bits 使用位元做加減

LeetCode #338. Counting Bits

題目:計算a,b的加總,但是禁止使用 +、- 符號。

設A=4(0100),B=5(0101)。

1.對A與B值做 or ,得0001

2.對A與B值做 and 然後將 and 的部份進位,得0100,進位(左移1000)。

3.將新A值(0001)與新B值(1000)做or,得(1001)。

4.將新A值(0001)與新B值(1000)做and,得(0000)。

5.進位已完成(已達到0(0000))。

6.結果為1001(9),計算完成。

...繼續閱讀 »

LeetCode #342. Power of Four 判斷是否為四的次方

LeetCode #342. Power of Four

題目:輸入一個整數,判斷是不是四的次方。

 

四的次方數的最高位的1都是計數位,

那麼我们只需AND一個數(0x55555555) <==> 1010101010101010101010101010101,

如果得到的數仍然為同一個,

則可以肯定其為四的次方數

    bool isPowerOfFour(int num) {
        return num > 0 && !(num & (num - 1)) && (num & 0x55555555) == num;
    }

節錄自 http://www.cnblogs.com/grandyang/p/5403783.html

...繼續閱讀 »