190顛倒二進位制位(位運算 分治思想)

2021-10-06 19:44:44 字數 629 閱讀 1627

1、題目描述

顛倒給定的 32 位無符號整數的二進位制位。

2、示例

輸入: 00000010100101000001111010011100

輸出: 00111001011110000010100101000000

解釋: 輸入的二進位制串 00000010100101000001111010011100 表示無符號整數 43261596,

因此返回 964176192,其二進位制表示形式為 00111001011110000010100101000000。

3、題解

解法一:

基本思想:位運算+分治思想,將32位分為高低交換,對半重複操作,不斷重複,直至相鄰每一位互換,面試可能問到,要求不使用迴圈實現,時間複雜度o(1)空間複雜度o(1)

解法二:

基本思想:位運算,時間複雜度o(32)空間複雜度o(1)

#include#include#include#include#includeusing namespace std;

class solution

};class solution1

return res;

}};int main()

190 顛倒二進位制位

題目描述 顛倒給定的 32 位無符號整數的二進位制位。示例 1 輸入 00000010100101000001111010011100 輸出 00111001011110000010100101000000 解釋 輸入的二進位制串 00000010100101000001111010011100 表...

位運算 顛倒二進位制位

a代表某字串 a b 異或 相同為0,不同為1 若b是一串0,則a b a,a b 0 a a 0 若b是一串1,則a b a,相當於把a取反,a b a a a a 利用x x 0,可以將三個數中重複的兩個數去掉 n 相當於無符號右移,左邊會補上0 獲取11111111,只需要把0取反 得到倒數第...

190 顛倒二進位制位(位運算)(看方法三)

方法一 用移位操作 關鍵操作 res res n 1 將 n 的 最低位插入到res的最右端 public class solution return res 方法二 通過不斷左右互換完成顛倒 互換32位的高低16,互換每個16位的高低8位 互換每個8位的高低4位 互換每個4位的高低2位 互換每個2...