博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【LeetCode】461. Hamming Distance (java实现)
阅读量:5790 次
发布时间:2019-06-18

本文共 1088 字,大约阅读时间需要 3 分钟。

hot3.png

原题链接

原题

The Hamming distance between two integers is the number of positions at which the corresponding bits are different.

Given two integers x and y, calculate the Hamming distance.

Note: 0 ≤ x, y < 231.

Example:

Input: x = 1, y = 4Output: 2Explanation:1   (0 0 0 1)4   (0 1 0 0)       ↑   ↑The above arrows point to positions where the corresponding bits are different.

题目要求

“汉明距离”,一个较为著名的问题,给定两个整数,求出这两个数字的二进制中位数不同的个数。比如上面的1和4,在第0位和第2位数字不同,因此这个汉明距离就是2。

解法

解法一:分别列出两个数字的二进制形式,并放在两个数组中,数组的索引级二进制形式中的位数,元素值即位数上对应的值。逐个的比较元素值,从而得出结果。这种方法直白,容易想到,但总感觉效率低下,不那么“高级”,这里我就不列出具体代码了。

解法二:比较两个二进制数字中不一样的数据,其实可以直接将两个数字取异或,然后再求出异或结果的二进制形式中有多少个1即可。

int hammingDistance(int x, int y) {    int i = x ^ y;    int count=0;    while (i != 0) {        ++ count;        i = (i-1)& i;    }    return count;}

注意:求出数字的二进制形式中有多少个1,有多种方法,详情参见:

测试用例:

public static void main(String[] args) {        Solution s = new Solution();        assert(s.hammingDistance(1, 4) == 2);        assert(s.hammingDistance(1, 0) == 1);        assert(s.hammingDistance(1, 1) == 0);    }

转载于:https://my.oschina.net/styshoo/blog/818772

你可能感兴趣的文章
Spring Cloud构建微服务架构—服务消费基础
查看>>
RAC实践采坑指北
查看>>
runtime运行时 isa指针 SEL方法选择器 IMP函数指针 Method方法 runtime消息机制 runtime的使用...
查看>>
LeetCode36.有效的数独 JavaScript
查看>>
Scrapy基本用法
查看>>
PAT A1030 动态规划
查看>>
自制一个 elasticsearch-spring-boot-starter
查看>>
【人物志】美团前端通道主席洪磊:一位产品出身、爱焊电路板的工程师
查看>>
一份关于数据科学家应该具备的技能清单
查看>>
机器学习实战_一个完整的程序(一)
查看>>
Web框架的常用架构模式(JavaScript语言)
查看>>
如何用UPA优化性能?先读懂这份报告!
查看>>
这些Java面试题必须会-----鲁迅
查看>>
Linux 常用命令
查看>>
CSS盒模型
查看>>
ng2路由延时加载模块
查看>>
使用GitHub的十个最佳实践
查看>>
脱离“体验”和“安全”谈盈利的游戏运营 都是耍流氓
查看>>
慎用!BLEU评价NLP文本输出质量存在严重问题
查看>>
JAVA的优势就是劣势啊!
查看>>