资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

461.HammingDistance-创新互联

https://leetcode.com/problems/hamming-distance/461.HammingDista
nce

将两个二进制数比较,输出不同位数的个数

站在用户的角度思考问题,与客户深入沟通,找到北镇网站设计与北镇网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站建设、成都网站制作、企业官网、英文网站、手机端网站、网站推广、国际域名空间、雅安服务器托管、企业邮箱。业务覆盖北镇地区。
Input: x = 1, y = 4

Output: 2

Explanation:
1   (0 0 0 1)
4   (0 1 0 0)
       ↑   ↑

解题思路:
此题考察的是知识点是运算符,特别是异或运算符^
异或运算符作用为“相同出0,不同出1”,这个特性正好可以用来解题
那么正常的思路就是将x,y两数进行异或运算,然后统计1的出现次数

解法(Python):

1 class Solution(object):
2   def hammingDistance(self, x, y):
3 return bin(x^y).count("1");

这个解法其实很low的,首先用了bin()函数,作用是将异或结果二进制化为字符串,然后利用字符串函数count统计1出现的次数并输出

 优秀解法评析(Java):

1 public int hammingDistance(int x, int y) {
2   int xor = x ^ y, count = 0;
3   for (int i=0;i<32;i++) count += (xor >> i) & 1;
4   return count;
5 }

由于题目有限制0 ≤ x, y < 231

所以这个解法将异或结果一个个移位,然后和1和运算,自然相同为1,不同为0,然后用count器加上这个相同的1自然就是“1出现的次数”


新闻名称:461.HammingDistance-创新互联
网站URL:http://cdkjz.cn/article/gppig.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

业务热线:400-028-6601 / 大客户专线   成都:13518219792   座机:028-86922220