Number of 1 bits(算法练习)
来源:互联网 发布:googlenet tensorflow 编辑:程序博客网 时间:2024/06/08 02:53
今天心血来潮做了下算法题Number of 1 bits这是道比较简单的题目。leetcode可以尝试一下多种语言,所以也算是个学语言的好方法。
C++实现
class Solution {public: int hammingWeight(uint32_t n) { int number=0; for(int i=0; i<32; i++) { if(n & 1) //C++和C里0相当于false,其他数字都true number++; n=n>>1; } return number; }};讨论里得票最多的代码int hammingWeight(uint32_t n){ int res = 0; while(n) { n &= n - 1; ++ res; } return res;}
Java实现
public class Solution { // you need to treat n as an unsigned value public int hammingWeight(int n) { int number=0; while(n != 0) { if((n & 1)==1) number++; n=n>>>1; } return number; }}还有一个更好的,来自讨论public class Solution {// you need to treat n as an unsigned valuepublic int hammingWeight(int n) { int count = 0; for (; n != 0; n >>>= 1) count += 1 & n; return count;}}还有人用String来匹配public int hammingWeight(int n) { int count = 0; String str = Integer.toBinaryString(n); for(int i=0; i<str.length(); i++) { if(str.charAt(i)=='1') { count++; } } return count;}
Java的位运算有一点特殊的是他的>>>, 和C++里的>>效果相同, 称为无符号位移,而<<和>>则表示也位移,区别在>>上,java里会保持结果的符号,也就是说如果是负数,将由1来补位。
Python
同样来自讨论class Solution:# @param n, an integer# @return an integerdef hammingWeight(self, n): return bin(n).count('1')
被python简洁震惊了
另外,位计算和java相同。
Javascript
var hammingWeight = function(n) { var numOfZero = 0; while(n){ numOfZero += n%2; n>>=1; } return numOfZero;};
余数相加也是个好办法
0 0
- Number of 1 bits(算法练习)
- Number of 1 Bits
- Number of 1 Bits
- Number of 1 Bits
- Number of 1 Bits
- Number of 1Bits
- Number of 1 Bits
- Number of 1 Bits
- Number of 1 Bits
- Number of 1 Bits
- Number of 1 Bits
- Number of 1 Bits
- Number of 1 Bits
- Number of 1 Bits
- Number of 1 Bits
- Number of 1 Bits
- Number of 1 Bits
- Number of 1 Bits
- Android异步更新UI-线程池-Future-Handler实例分析
- FFmpeg源代码简单分析:makefile
- Android应用开发相关下载资源(2014/12/14更新)
- 基于mykernel实现的时间片轮转调度代码分析
- Android工程文件不能自动生成R文件
- Number of 1 bits(算法练习)
- Palindrome Number
- 《大型网站系统与JAVA中间件实践》读书笔记
- 3D演示
- C#打开或者创建一个文件,然后向其末尾写入数据的方法
- 私网安装Ambari实现Hadoop、Hbase等自动化安装(离线 本地源)
- HotSpot运行时概览#1
- week2【项目2】长方体类
- java tcnative-1.dll 各个版本的地址