LeetCode By Go

[LeetCode By Go 1]461. Hamming D

2017-08-14  本文已影响48人  miltonsun

题目描述

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)
    }
}
上一篇下一篇

猜你喜欢

热点阅读