Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでのハミング距離


2つの整数があると考えてください。それらのハミング距離を見つける必要があります。ハミング距離は、2つの数値間のビット数が異なるビット数です。したがって、数値が7と15の場合、2進数で0111と1111になります。ここでは、MSbが異なるため、ハミング距離は1です。

これを解決するには、次の手順に従います-

  • i=31から0まで
    • b1 =xの右シフト(i AND 1回)
    • b2 =yの右シフト(i AND 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

  1. Pythonのissuperset()

    この記事では、Pythonでのissuperset()と、さまざまな分野でのその実装について学習します。 このメソッドは、セットBのすべての要素に引数として渡されるすべての要素セットAが含まれている場合はブール値Trueを返し、Aのすべての要素がBに存在しない場合はfalseを返します。 これは、BがAのスーパーセットである場合、それを意味します returns true; else False 例 いくつかの例を見てみましょう A = {'t','u','t','o','r','i',

  2. Pythonでのミンコフスキー距離

    ミンコフスキー距離は距離であり、ノルムベクトル空間では、結果はミンコフスキーの不等式になります。ミンコフスキー距離は、ベクトルの距離の類似性に使用されます。 scipy.spatial.distance.minkowski >>> from scipy.spatial import distance >>> distance.minkowski([1, 0, 0], [0, 1, 0], 1) 2.0 >>> distance.minkowski([1, 0, 0], [0, 1, 0], 2) 1.414213562373095