華為機試 求最大連續bit數

2021-08-04 18:29:56 字數 735 閱讀 8380

題目描述

功能: 求乙個byte數字對應的二進位制數字中1的最大連續數,例如3的二進位制為00000011,最大連續2個1

輸入:乙個byte型的數字

返回: 對應的二進位制數字中1的最大連續數

輸入描述:

輸入乙個byte數字

輸出描述:

輸出轉成二進位制之後連續1的個數

示例1輸入

輸出方法一分析:直接判斷最後一位是1還是0,是1個數加1,是0更新最大1個數。每次迴圈後向右移動一位。

#include using namespace std;

int main()

n=n/2; //n=n>>1;

} kmax=max(k,kmax);

cout<

方法二分析:每次向右(左)移動1位與原數相與,消掉連續1中的乙個,其他位上全為0,重複消掉所有的1。

#include using namespace std;

int main(){

int byte;

while(cin>>byte){

int k=0;

for(k=0;byte!=0;++k)

byte=byte&(byte<<1); //byte=byte&(byte>>1);

cout<

華為OJ 求最大連續bit數

求最大連續bit 數功能 求乙個byte 數字對應的二進位制數字中 1的最大連續數,例如 3的二進位制為 00000011 最大連續2個 1輸入 乙個byte 型的數字 輸出 無返回 對應的二進位制數字中 1的最大連續數 輸入描述 輸入乙個byte 數字輸出描述 輸出轉成二進位制之後連續1 的個數輸...

華為OJ 求最大連續bit數

將數字和1進行按位與運算,然後將數字向右移一位,直到數字變為0為止。include include includeusing namespace std int main sort count.begin count.end cout count count.size 1 endl return 0...

求最大連續陣列

題目描述 給定乙個二進位制陣列,找到含有相同數量的0和1的最長連續子陣列 1 方法一,暴力破解法,獲取字串的子串,n 2個,然後判斷每個串是否符合0,1個數相同,這樣做的時間複雜度為o n 3 稍微優化,如果乙個長度為n的子串滿足條件,那麼這n個元素的和加起來一定 n 2 這樣的話,迴圈增量加就可以...