1. 程式人生 > >華為機試題-判斷二進位制中0的個數【4】

華為機試題-判斷二進位制中0的個數【4】

題目描述:

輸入一個10進位制數字,請計算該數字對應二進位制中0的個數,注意左數第一個1之前的所有0都不需要計算。不需要考慮負數的情況。

我之前的部落格講過類似的問題,部落格地址如下:

思路分析:

  • 首先要注意不是統計所有的0,而是統計第一個1之後的0
  • 要使用位運算,如何判斷什麼時候停止,首先判斷一共包含n個1,然後對數字進行右移n次,每次和1進行與運算,統計0的數量

注意:

  • 對於機試,一定注意心細,慢慢的寫,注意變數的對錯,另外注意變數的初始化

程式碼:

import java.util.Scanner;

public class Main {
    public
static void main(String[] args) { System.out.println("srart"); Scanner scan = new Scanner(System.in); while(scan.hasNext()){ int n = scan.nextInt(); int count = numberOfZero(n); if( count >= 0){ System.out.println(count); } } scan.close(); } //統計n中的0的個個數,注意從左邊開始的第一個1之前的0不統計
public static int numberOfZero(int n){ //統計n的1的個數 int countOfOne = 0; //統計計算的截止數字 int count = 0; //統計0的個數 int countOfZero = 0; int input = n; countOfOne = numberOfOne(n); while(input != 0){ if
((input & 1) == 1){ count++; if(count == countOfOne){ break; } }else{ countOfZero++; } input = input >>1; } return countOfZero; } //統計n中1的個數 public static int numberOfOne(int n){ int count = 0; while(n != 0){ n = n & (n-1); count++; } return count; } }

我的微信二維碼如下,歡迎交流討論

這裡寫圖片描述

歡迎關注《IT面試題彙總》微信訂閱號。每天推送經典面試題和麵試心得技巧,都是乾貨!

微信訂閱號二維碼如下:

這裡寫圖片描述

相關推薦

試題-判斷二進位制0個數4

題目描述: 輸入一個10進位制數字,請計算該數字對應二進位制中0的個數,注意左數第一個1之前的所有0都不需要計算。不需要考慮負數的情況。 我之前的部落格講過類似的問題,部落格地址如下: 思

試題-判斷一個數字是否包含兩個相同的子串

#include <iostream> #include <sstream> #include <string> #include <map> using namespace std; int main() {

試題--二進位制數的每位進行0和1反轉求值

一、問題描述 功能描述:對一個二進位制數的每位進行0和1反轉,求翻轉後的二進位制所對應的十進位制 輸入:110 輸出:1 要求實現方法: public String getNumber(BigInteger data) {     //TODO     return "";

試題判斷一個數字是否包含兩個相同的子串

描述: 判斷給定的一個數字,把它當成字串以後,該字串中是否包含相同的兩個子串,子串的長度要求大於等於2。 比如:12123,該數字包含兩個“12”子串; 又比如:1223122,該數字包含兩個“

試題——完全數判斷

  這篇博文同上篇博文百度2017年暑期實習生筆試題——單詞接龍同屬2016中興捧月藍劍之路挑戰賽初賽模擬測試題,相比前一題難度偏低,非惡意灌水,僅為保證該系列博文的完整性。   測試用例如下圖:   中興的比賽中官方已經為我們實現了主程式,只需要我們自己實現Perfect

試題

關聯關係: package huawei.cn; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Map; import java.util.Map.Entry; import java

試題(練習)

目錄 1、選秀節目打分 2、奇偶排序 3、作業系統任務排程問題。 4. 列印陣列中最大的2個數 5.迴文數字判斷。  6.中級題:亮著電燈的盞數   7.高階題:地鐵換乘 8.判斷if語句括號是否合法 9. 列印 楊輝三角形

牛客網 - 線上程式設計 - 試 - 刪除字串出現次數最少的字元

題目描述 實現刪除字串中出現次數最少的字元,若多個字元出現次數一樣,則都刪除。輸出刪除這些單詞後的字串,字串中其它字元保持原來的順序。 輸入描述: 字串只包含小寫英文字母, 不考慮非法輸入,輸入的字串長度小於等於20個位元組。 輸出描述: 刪除字串中出現

牛客網------試題2

寫出一個程式,接受一個由字母和數字組成的字串,和一個字元,然後輸出輸入字串中含有該字元的個數。不區分大小寫。 輸入描述: 輸入一個有字母和數字以及空格組成的字串,和一個字元。 輸出描述: 輸出輸入字串中含有該字元的個數。 示例1 輸入 ABCDEF A 輸出

試題 查詢

每組輸入第一行是兩個正整數N和M(0<N<=30000,0<M<5000),分表代表學生的數目和操作的數目。 學生ID編號從1編到N。 第二行包含N個整數,代表這N個學生的初始成績,其中第i個數代表ID為i的學生的成績。 接下來有M行。每一行有一個字元C(只取‘Q’或‘U’

某道試題

這道題比較簡單,我就直接放題目跟我的解答吧 對輸入的單詞進行字典序排序輸出: 字典序定義 1. 單詞中字母比較不區分大小寫,兩個單詞先以第一個字母作為排序的基準, 如果第一個字母相同,就用第二個字

試題[2017.8.23]

題目:給定一個正整數,給出消除重複數字以後最大的整數 輸入描述: 正整數,注意考慮長整數 輸出描述: 消除重複數字以後的最大整數 下面的好像有問題,當輸入是4325432時結果不對 #includ

試題之表示式求值

今天做了華為機試,最後一道題做錯了,回來又重新寫了一下。 表示式求值往年好像有的,但是這次的題加了括號,所以寫起來麻煩了一些。 還有就是在處理+-號的時候做錯了,可能是當時腦袋太蒙了,沒有看出來,160的題只得了61分(不過話說這個1是咋來的?)。 下面附上程式碼吧: #i

試題——擲骰子游戲

/*問題描述:   在擲骰子游戲中,會根據所擲數字在地圖中前進幾步,前進完成後需要根據當前地圖位置所示的障礙進行相應操作,其中障礙表示:  1) 9:無障礙  2) 1:停擲一輪,即下輪所擲數字無效; 3) 2:後退兩步,如果已經到起點不再後退; 4) 3:獎勵前進一步 

試題--9.數字顛倒

兩種型別:逆序不去開始的0,逆序去掉開頭的0 逆序不去開始的0 題目描述 描述: 輸入一個整數,將這個整數以字串的形式逆序輸出 程式不考慮負數的情況,若數字含有0,則逆序形式也含有0,如輸入為

試題--3.明明的隨機數

題目描述: 明明想在學校中請一些同學一起做一項問卷調查,為了實驗的客觀性,他先用計算機生成了N個1到1000之間的隨機整數(N≤1000),對於其中重複的數字,只保留一個,把其餘相同的數去掉,不同的數

牛客試題刷題筆記(一)

馬上華為提前批開始了,嚇得我趕緊上牛客網刷題,記錄如下: 所有程式碼都在github 1.字串最後一個單詞的長度 一段英文字串中最後一個單詞的長度。 題目比較簡單,做法有很多: 比如, 可以放到stringstream裡面split,拿到最後一個單詞

試題--高鐵換乘(Floyed演算法)

題目: 已知2條地鐵線路,其中A為環線,B為東西向線路,線路都是雙向的。經過的站點名分別如下,兩條線交叉的換乘點用T1、T2表示。編寫程式,任意輸入兩個站點名稱,輸出乘坐地鐵最少需要經過的車站數量(含

試題 好友關係管理

好友關係管理 描述: 現有一個社交網站,其好友推薦策略為:使用者A和使用者B不是好友,當二人的共同好友數量超過好友推薦閾值m時,就向A和B分別推薦為彼此好友。 本題任務為:對設定的m值,給定

試題--迴文數的判定

 一、題目描述: 有這樣一類數字,他們順著看和倒著看是相同的數,例如:121,656,2332等,這樣的數字就稱為:迴文數字。編寫一個函式,判斷某數字是否是迴文數字。 要求實現方法: public String isPalindrome(long num); 二、 演算法分