《剑指Offer》 No.10 二进制中1的个数

解法一  运行时间:29m  占用内存:629k

/*
 * 输入一个整数,获取二进制中包含1的个数
 **/
public static int  numberOf1(int n) {
        String s =Integer.toBinaryString(n);
        char[] c =s.toCharArray();
        int j =0;
        for(int i=0;i<c.length;i++){
                if(c[i]=='1'){
                    j++;
                }
        }
        return j;
     }
}
源码分析:
public static String toBinaryString(int i) {
        return toUnsignedString0(i, 1);
 }
  /**
     * Convert the integer to an unsigned number.
     */

    private static String toUnsignedString0(int val, int shift) {
        // assert shift > 0 && shift <=5 : "Illegal shift value";
        int mag = Integer.SIZE - Integer.numberOfLeadingZeros(val);
        int chars = Math.max(((mag + (shift - 1)) / shift), 1);
        char[] buf = new char[chars];

        formatUnsignedInt(val, shift, buf, 0, chars);

        // Use special constructor which takes over "buf".
        return new String(buf, true);
    }

代码分析:以二进制(基数 2)无符号整数形式返回一个整数参数的字符串表示形式。

  • 先把整数转换成二进制字符串

  • 把字符串转换成字符数组

  • 遍历该数组,判断每位是否为1,为1 计数加1。

  • 遍历完成返回1的个数

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、快捷键 ctr+b 执行ctr+/ 单行注释ctr+c ...
    o_8319阅读 11,142评论 2 16
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 13,173评论 0 3
  • 1 Object 对象 教程:https://wangdoc.com/javascript/stdlib/obje...
    智勇双全的小六阅读 7,007评论 0 0
  • 你们听说过海洋星吗?那是离月亮很近的一颗小星星。小到从我们地球看上去根本发现不了它。 但海洋星是宇宙最重要的星星,...
    蓝钥匙阅读 6,281评论 11 33
  • 墙上的老钟依旧不知疲倦的在滴答滴答走着 老猫慵懒地躺在屋顶惬意地享受着温暖的日光浴 炎炎夏日 暑气腾腾 躲在阴凉处...
    杨一说阅读 2,405评论 3 1

友情链接更多精彩内容