Logo
    Logo

    ©️ 2020-2026, Akhil Abraham.

    LinkedInGitHubMediumX
    Akhil Abraham
    Akhil Abraham
    /Posts
    Posts
    /LeetCode
    LeetCode
    /
    LeetCode
    /0461 - Hamming Distance
    0461 - Hamming Distance
    0461 - Hamming Distance
    0461 - Hamming Distance

    0461 - Hamming Distance

    Difficulty
    Easy
    Language
    Python
    URL
    https://leetcode.com/problems/hamming-distance/

    Solution 1 - XOR and Bit Count

    XOR the two integers to get a number whose set bits represent positions where x and y differ. Then count the number of set bits using Python's built-in bin().count('1').

    TimeComplexity:O(1)TimeComplexity: O(1)TimeComplexity:O(1)
    SpaceComplexity:O(1)SpaceComplexity: O(1)SpaceComplexity:O(1)

    Solution 2 - XOR with Manual Bit Counting (Brian Kernighan's Algorithm)

    XOR the two integers, then repeatedly clear the lowest set bit using n & (n - 1) until the result is zero. Each iteration removes exactly one set bit, so the loop count equals the Hamming distance.

    TimeComplexity:O(1)TimeComplexity: O(1)TimeComplexity:O(1)
    SpaceComplexity:O(1)SpaceComplexity: O(1)SpaceComplexity:O(1)
    """ 0461.1 - Hamming Distance - Solution 1 - XOR and Bit Count """
    
    #####################################################################################
    # Imports
    #####################################################################################
    
    
    #####################################################################################
    # Classes
    #####################################################################################
    class Solution:
        """Solution Class"""
    
        def hammingDistance(self, x: int, y: int) -> int:
            """Hamming Distance Function"""
            return bin(x ^ y).count('1')
    
    
    #####################################################################################
    # Functions
    #####################################################################################
    def testcase():
        """Test Function"""
        print(Solution().hammingDistance(1, 4))   # 2
        print(Solution().hammingDistance(3, 1))   # 1
        print(Solution().hammingDistance(0, 0))   # 0
    
    
    #####################################################################################
    # Main
    #####################################################################################
    if __name__ == "__main__":
        testcase()
    
    """ 0461.2 - Hamming Distance - Solution 2 - Brian Kernighan's Algorithm """
    
    #####################################################################################
    # Imports
    #####################################################################################
    
    
    #####################################################################################
    # Classes
    #####################################################################################
    class Solution:
        """Solution Class"""
    
        def hammingDistance(self, x: int, y: int) -> int:
            """Hamming Distance Function"""
            xor = x ^ y
            count = 0
    
            while xor:
                count += 1
                xor &= xor - 1
    
            return count
    
    
    #####################################################################################
    # Functions
    #####################################################################################
    def testcase():
        """Test Function"""
        print(Solution().hammingDistance(1, 4))   # 2
        print(Solution().hammingDistance(3, 1))   # 1
        print(Solution().hammingDistance(0, 0))   # 0
    
    
    #####################################################################################
    # Main
    #####################################################################################
    if __name__ == "__main__":
        testcase()