剑指OfferII003.前n个数字二进制中1的个数-创新互联

题目

给定一个非负整数 n ,请计算 0 到 n 之间的每个数字的二进制表示中 1 的个数,并输出一个数组。

十年的盐边网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。成都全网营销的优势是能够根据用户设备显示端的尺寸不同,自动调整盐边建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联建站从事“盐边网站设计”,“盐边网站推广”以来,每个客户项目都认真落实执行。

示例:

  • 输入: n = 2
    输出: [0,1,1]
    解释:
    0 -->0
    1 -->1
    2 -->10

代码

思路:先将每个数字转变为二进制,然后定义一个函数count1计算string中1的个数.

class Solution {public int[] countBits(int n) {int[] out = new int[n+1];

        for(int i=0; iString num = Integer.toBinaryString(i); 
            out[i] = count1(num);
            // System.out.println(out[i]);
        }
        return out;
    }

    public int count1(String x){System.out.println(x);
        int out=0;
        for(int i=0; ichar mid = x.charAt(i);
            System.out.println(mid);
            if (mid == '1'){out ++;
            }
        }
        return out;
    }
}

学习
  1. Java中的进制转换
十进制转二进制 (n为十进制数)
String s=Integer.toBinaryString(n);

十进制转八进制(n为十进制数)
String s=Integer.toOctalString(n);

十进制转十六进制(n为十进制数)
String s=Integer.toHexString(n); 

十进制转任何进制(n为十进制数)
String s=Integer.toString(int n,int r);//转化为 r 进制,r 的范围[2,36]

任何进制转十进制
int n=Integer.parseInt(String s,int r);//将 r 进制的字符串 s 转化为十进制

2.string类用法

s.length() 返回长度
s.charAt(i) 返回第i处的char,注意别和python中s[i]搞混

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


网站标题:剑指OfferII003.前n个数字二进制中1的个数-创新互联
网页网址:http://hbruida.cn/article/dsgsoj.html