해밍 거리

1 minute read

심볼이 다른 위치의 개수

길이가 같은 문자열 두 개 사이의 해밍 거리는 해당 심볼이 다른 위치의 개수입니다. 즉, 한 문자열을 다른 문자열로 변경하는데 필요한 최소 대체 개수 또는 한 문자열을 다른 문자열로 변환할 수있는 최소 오류수를 측정합니다. 보다 일반적인 의미로 해밍 거리는 두 시퀀스 사이의 편집 거리를 측정하기위한 여러 문자열 메트릭 중 하나입니다.

예제

  • “karolin”과 “kathrin”의 해밍거리는 3.
  • “karolin”과 “kerstin”의 해밍거리는 3.
  • 1011101과 1001001의 해밍거리는 2.
  • 2173896과 2233796의 해밍거리는 3.

구현

/**
 * @param {string} a
 * @param {string} b
 * @return {number}
 */
function hammingDistance(a, b) {
  if (a.length !== b.length) {
    throw new Error("Strings must be of the same length");
  }

  let distance = 0;

  for (let i = 0; i < a.length; i += 1) {
    if (a[i] !== b[i]) {
      distance += 1;
    }
  }

  return distance;
}

참고

Wikipedia

출처

Github