寫在前面:
為了增長(zhǎng)一下自己的數(shù)據(jù)結(jié)構(gòu)能力,也為了面試準(zhǔn)備纫事,準(zhǔn)備將劍指Offer做一下勘畔,并與各位分享所灸,希望各位可以對(duì)代碼以及思路提提建議,歡迎志同道合者炫七,謝謝爬立。
題目
輸入一個(gè)整數(shù),輸出該數(shù)二進(jìn)制表示中1的個(gè)數(shù)万哪。其中負(fù)數(shù)用補(bǔ)碼表示侠驯。
思路:
這個(gè)有兩種解決辦法,
一種是java自帶的api
一種是使用&計(jì)算奕巍,(網(wǎng)上看的陵霉,但是不大懂)
代碼實(shí)現(xiàn)
public static int numberOfOne2(int n) {
int count = 0;
while (n != 0) {
count++;
n = n & (n - 1);
}
return count;
}
public static int numberOfOne1(int n) {
int count = 0;
String str = Integer.toBinaryString(n);
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i) == '1') {
count++;
}
}
return count;
}
希望大家可以多多指點(diǎn),優(yōu)化一下伍绳,
QQ群:552113611