मान लें कि हमारे पास दो पूर्णांक हैं। हमें उनकी हैमिंग दूरी ज्ञात करनी होगी। हैमिंग दूरी दो संख्याओं के बीच बिट भिन्न बिट काउंट की संख्या है। इसलिए यदि संख्याएँ 7 और 15 हैं, तो वे बाइनरी में 0111 और 1111 हैं, यहाँ MSb अलग है, इसलिए हैमिंग दूरी 1 है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- i =31 डाउन टू 0
- . के लिए
- b1 =x की दाहिनी पारी (i और 1 बार)
- b2 =y की दाहिनी पारी (i और 1 बार)
- यदि b1 =b2, तो उत्तर दें:=उत्तर + 0, अन्यथा उत्तर दें:=उत्तर + 1
- वापसी का जवाब
उदाहरण
आइए एक बेहतर समझ प्राप्त करने के लिए निम्नलिखित कार्यान्वयन देखें -
class Solution(object): def hammingDistance(self, x, y): """ :type x: int :type y: int :rtype: int """ ans = 0 for i in range(31,-1,-1): b1= x>>i&1 b2 = y>>i&1 ans+= not(b1==b2) #if not(b1==b2): # print(b1,b2,i) return ans ob1 = Solution() print(ob1.hammingDistance(7, 15))
इनपुट
7 15
आउटपुट
1