Leetcode461. ハミング距離

2549 ワード

Leetcode461. ハミング距離
タイトル:2つの整数の間の漢明距離は、この2つの数字がバイナリビットの異なる位置に対応する数を指す.
2つの整数xとyを与え,それらの間のハミング距離を計算した.注意:0≦x,y<231.
例:
  : x = 1, y = 4
  : 2
  :
1   (0 0 0 1)
4   (0 1 0 0)
       ↑   ↑       
                   。

問題解:1.組み込み関数bitCount()2を使用します.まず2つの数に対して異を求めたり演算したりして、計算結果のバイナリ形式の中の1つの数scalaコードを求めます.
 /**
    *       bitCount
    * bitCount:           1   
    * @param x
    * @param y
    * @return
    */
  def hammingDistance(x: Int, y: Int): Int = {
     Integer.bitCount(x^y)
  }
  
/**
    *        ,   1   
    * @param x
    * @param y
    * @return
    */
  def hammingDistance2(x: Int, y: Int): Int = {
    var count = 0
    var a = x ^ y
    while (a != 0) {
      count = count + 1
      a = a & (a - 1)
    }

    count
  }