461. 汉明距离

该博客介绍了如何使用Kotlin和Java实现计算两个整数的汉明距离。汉明距离是两个等长字符串对应位置不同字符的个数。在Kotlin中,通过异或操作并逐位检查来计算,而在Java中,利用了内置的`bitCount`函数直接统计二进制位不同的数量。这两种方法都高效地解决了问题。
摘要由CSDN通过智能技术生成

题目链接:https://leetcode-cn.com/problems/hamming-distance/

思路:

Kotlin写法:对x,y进行异或,不相同的位置就是1,相同的就是0,然后把得到的结果每次and 1判断二进制下的最后一位是不是1(因为不是1就是0,所以直接加在result上即可),然后右移一位(右移用"shr")。

java写法:对x,y进行异或,不相同的位置就是1,相同的就是0,因为有现成的库函数判断整数二进制下有几个1,所以直接用库函数对x^y的结果进行判断即可。

以上两种语言的思路是一样的,都是判断x xor y的结果在二进制下有几个1。注意:Kotlin异或是"xor",java是"^"

上代码:

Kotlin:

class Solution {
    fun hammingDistance(x: Int, y: Int): Int {
        var n = x xor y
        var result = 0
        while (n != 0) {
            result += n and 1
            n = n shr 1
        }
        return result
    }
}

java:

class Solution {
    public int hammingDistance(int x, int y) {
        return Integer.bitCount(x ^ y);
    }
}

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

心脏dance

如果解决了您的疑惑,谢谢打赏呦

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值