From : www.LintCode.com
样例
给定 32 (100000),返回 1
给定 5 (101),返回 2
给定 1023 (111111111),返回 9
解决方案一
本方案思想:
首先,将十进制的参数转为二进制,这里可以直接调用API来转换。
转换后的结果是一个字符串。
将该字符串转换为字符数组,遍历字符数组,统计其中1的个数。
返回1的个数。
代码实现(JAVA)
public class Solution {
/**
* @param num: an integer
* @return: an integer, the number of ones in num
*/
public int countOnes(int num) {
// write your code here
//将参数转为二进制
String str = Integer.toBinaryString(num);
//输出转换后的二进制结果,检验是否正确
//System.out.println(str);
//将得到的(字符串形式的)二进制结果转为字符数组
char [] ca = str.toCharArray();
int sum = 0;
//遍历字符数组,找出有多少个1
for (int i = 0; i < ca.length; i++){
if (ca[i] == '1'){
sum++;
}
}
//输出1的个数,检验是否正确
//System.out.println(sum);
return sum;
}
}