nowcoder华为机试:求int型正整数在内存中存储时1的个数
来源:互联网 发布:atsl有obd端口吗 编辑:程序博客网 时间:2024/05/24 04:36
题目
输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数。
这是我想的办法(有点慢时间复杂度高):
import java.util.Scanner;public class Main{ public static void main(String[] args){ Scanner scanner = new Scanner(System.in); String str = scanner.nextLine(); int num = Integer.valueOf(str); String binary = Integer.toBinaryString(num); int count = 0; for(int i = 0; i<binary.length(); i++){ if(binary.charAt(i) == '1'){ count++; } } System.out.println(count); }}
这种方法是利用java提供的类函数,直接把数变为二进制表示再数个数。
还有一种方法是师兄想的,我写的代码:
import java.util.Scanner;public class Main { public static void main(String[] args){ Scanner scanner = new Scanner(System.in); String str = scanner.nextLine(); int num = Integer.valueOf(str); int count = 0; while(num != 0){ if((num & 1) == 1){ count++; } num = num>>1; } System.out.println(count); }}
这种方法是利用在电脑里面存储的数本来就是二进制的,然后移位,与1相与,结果是1就是1,结果不是1就是0,这种方法快一些。
阅读全文
0 0
- nowcoder华为机试:求int型正整数在内存中存储时1的个数
- Java-NowCoder-求int型正整数在内存中存储时1的个数
- nowcoder--求int型正整数在内存中存储时1的个数
- Java - 华为机试训练 - 求int型正整数在内存中存储时1的个数
- 《华为机试在线训练》之求int型正整数在内存中存储时1的个数
- java-----------华为机试----------求int型正整数在内存中存储时1的个数 (水题for java)
- 华为机试——求int型正整数在内存中存储时1的个数
- 【华为OJ15】求int型正整数在内存中存储时1的个数
- 华为oj之求int型正整数在内存中存储时1的个数
- 华为OJ:求int型正整数在内存中存储时1的个数
- 【华为OJ】求int型正整数在内存中存储时1的个数
- 华为——求int型正整数在内存中存储时1的个数
- 华为机试---求int型数据在内存中存储时1的个数
- 牛客网_华为机试_015_求int型正整数在内存中存储时1的个数 (十进制转二进制)
- 华为机试题--13.求int型数据在内存中存储时1的个数
- 求int型正整数在内存中存储时1的个数
- 14:求int型正整数在内存中存储时1的个数
- 求int型正整数在内存中存储时1的个数
- C# 类型转换方法
- 微信小程序源码分享
- export solr data
- 微信小程序开发调试阶段不校验请求域名
- Ehcache管理缓存与Spring的整合
- nowcoder华为机试:求int型正整数在内存中存储时1的个数
- explicit构造函数
- jquery直接引用json文件
- mysql面试汇总
- 【MVC】了解
- 【传智播客郑州校区分享】认识JavaScript中的this
- 《深入理解mybatis原理》 Mybatis初始化机制详解
- 【OpenCV开发之六】3D 摄像头解决方案
- Ubuntu虚拟机的安装