Hamming Distance 引发的思考

今天,在刷LeetCode上面的题目时,遇到一个算法题,叫Hamming Distance,题目描述如下:


实际上就是两个int型的变量二进制编码数值不同的位置的个数,其实换句话说,就是求两者二进制编码的异或之后1的个数


我个人想了很久,用了很蠢很蠢的方法,现在看看,简直是。。。

来,show the code:

public int hammingDistance(int x, int y) {
   	 int c=Integer.valueOf(Integer.toBinaryString(x));
    	 int d=Integer.valueOf(Integer.toBinaryString(y));
    	 String eString=Integer.toString(c^d);
    	 String regEx="[^1]";   
    	 Pattern p = Pattern.compile(regEx);
    	 Matcher m = p.matcher(eString);
    	 return  m.replaceAll("").trim().length();
  
    }

又是正则表达式又是二进制转换什么的。最后还是有问题。。

不过,看到解法时,我顿时觉得自己的方法太low了:

public int hammingDistance(int x, int y) {
        return Integer.bitCount(x ^ y);
    }
。。。这什么啊?一行代码解决了?赶紧查查那是什么东西0.0:



自己还是太年轻!!!

继续学习,继续加油,java自己还是个入门


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值