[用Golang刷LeetCode之 1] 461. Hamming Distance

miltonsun · · 886 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

题目描述

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.

解题思路

此题考察的是知识点是异或运算符^,解题的思路就是将x,y两数进行异或运算,然后统计1的出现次数。

相关知识点

在本题目中,汉明距离的含义是两个整数的不同二进制位的和。
异或运算符作用为“相同出0,不同出1”

Golang代码

hammingDistance.go

package _461_HammingDistance

func HammingWeight(z int) (w int){

    for z > 0 {
        tmp := z % 2
        if 1 == tmp {
            w++
        }
        z = z /2
    }

    return w
}
func HammingDistance(x int, y int) int {

    z := x ^ y

    return HammingWeight(z)
}

测试代码

hammingDistance_test.go

package _461_HammingDistance
import (
    "testing"
)

func Test_HammingDistance(t *testing.T) {
    ret := HammingDistance(1, 4)
    if 2 != ret {
        t.Errorf("test fail, want 2, get %+v\n", ret)
    } else {
        t.Logf("test pass, want 2, get %+v\n", ret)
    }
}

有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:miltonsun

查看原文:[用Golang刷LeetCode之 1] 461. Hamming Distance

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

886 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传