華為機試題-判斷二進位制中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); 二、 演算法分