java-----------华为机试----------求int型正整数在内存中存储时1的个数 (水题for java)
来源:互联网 发布:安卓手机运行java应用 编辑:程序博客网 时间:2024/06/07 22:33
题目描述
输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数。
输入描述:
输入一个整数(int类型)
输出描述:
这个数转换成2进制后,输出1的个数
输入例子:
5
输出例子:
2很简单啊,直接调用函数Interger.toBinaryString转为数字对应的二进制字符串;解法:import java.util.Arrays; import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while(sc.hasNext()){ int num=sc.nextInt(); String str=Integer.toBinaryString(num);//调用默认函数,讲十进制转二进制 int len=str.length();//判断循环次数 int count=0; //int 一个count作为计数器 for(int i=0;i<len;i++){ if(str.charAt(i)=='1'){ //每遇到一个‘1’,计数器count+=1; count++; } } System.out.println(count); } }}String str=Integer.toBinaryString(num);//10进制转2进制Integer.toHexString(num);//10进制转16进制Integer.toOctalString(num);//10进制转2进制;当然这不算通解,通解在这:import java.util.Arrays; import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while(sc.hasNext()){ int num=sc.nextInt(); String s = Integer.toString(num, 2); //Interger.toString(N,B),N为10进制数字,B为字符串内的进制 int len=s.length();//判断循环次数 int count=0; //int 一个count作为计数器 for(int i=0;i<len;i++){ if(s.charAt(i)=='1'){ //每遇到一个‘1’,计数器count+=1; count++; } } System.out.println(count); } }}
顺带说下,任意进制转10进制,java也是有自带方法的。int i = Integer.parseInt("32", N);
Integer i = Integer.valueOf("32", N);
这题,我参考了http://blog.csdn.net/lzuacm/article/details/52691106的思想后,他说n&(n-1)的次数就是1的个数;import java.util.Arrays; import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while(sc.hasNext()){ int num=sc.nextInt(); System.out.println(digitofNum(num)); } } public static int digitofNum(int n){ int count=0; while (n!=0){ n=n&(n-1); count++; } return count; }}虽然我不明白原理,但是还是先记住吧!不过时间,空间和第一种一样,都比第二种通用的要少,不过也没少太多10个测试,就少2ms。
0 0
- java-----------华为机试----------求int型正整数在内存中存储时1的个数 (水题for java)
- Java - 华为机试训练 - 求int型正整数在内存中存储时1的个数
- nowcoder华为机试:求int型正整数在内存中存储时1的个数
- 《华为机试在线训练》之求int型正整数在内存中存储时1的个数
- 华为机试——求int型正整数在内存中存储时1的个数
- Java-NowCoder-求int型正整数在内存中存储时1的个数
- 【华为OJ15】求int型正整数在内存中存储时1的个数
- 华为oj之求int型正整数在内存中存储时1的个数
- 华为OJ:求int型正整数在内存中存储时1的个数
- 【华为OJ】求int型正整数在内存中存储时1的个数
- 华为——求int型正整数在内存中存储时1的个数
- 牛客网_华为机试_015_求int型正整数在内存中存储时1的个数 (十进制转二进制)
- 华为机试---求int型数据在内存中存储时1的个数
- 华为机试题--13.求int型数据在内存中存储时1的个数
- nowcoder--求int型正整数在内存中存储时1的个数
- 求int型正整数在内存中存储时1的个数
- 14:求int型正整数在内存中存储时1的个数
- 求int型正整数在内存中存储时1的个数
- 开启企业云计算之门的金钥匙:基础框架和技术标尺(1)
- google开源插件gson,对象转json,Json转对象
- redhat6.5安装postgre9.2
- SQLITE3 使用总结(十)
- java数组工具类
- java-----------华为机试----------求int型正整数在内存中存储时1的个数 (水题for java)
- Notes on Tensorflow(四)Variables
- 图片旋转,压缩,保存,拷贝+dp2px
- 2017-04-28欠博客一篇
- mysql下载、安装、配置
- 2017-04-28欠博客一篇
- hdu 1032 The 3n+1 problem
- 题解——Leetcode 6. ZigZag Conversion 难度:Medium
- 2017-04-28欠博客一篇