461. Hamming Distance

复制代码
/**
 * 461. Hamming Distance
 * https://leetcode.com/problems/hamming-distance/description/
 * 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 < 2的31次方.

Example:

Input: x = 1, y = 4
Output: 2

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

The above arrows point to positions where the corresponding bits are different.
 *
 * 我们先了解下位运算,包括:
 * & (与) : 1和1为1,其余为0;
 * | (或) : 有1为1,零零为0;
 * ^ (异或): 相同的为0,不同的为1;
 * ~ (取反): 按位取反;
 * >> (右移): 右移n位等于除于2的n次方;
 * << (左移): 左移n位等于乘于2的n次方;
 *
 * */
class Solution {
    fun hammingDistance(x: Int, y: Int): Int {
        val exc = x xor y
        //calculate the number of 1
        return exc.toString(2).count { it == '1' }
    }
}

复制代码
class Solution2 {
    fun hammingDistance(x_: Int, y_: Int): Int {
        var result = 0
        var x = x_
        var y = y_
        while (x > 0 || y > 0) {
            result += (x xor y) and 1
            x = x shr 1 //除于2
            y = y shr 1
        }
        return result
    }
}
复制代码

 

 
复制代码

 

posted @   johnny_zhao  阅读(97)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示