JavaScriptで2つの文字列間のハミング距離を計算する方法
ハミング距離とは?
ハミング距離(Hamming Distance)とは、同じ長さを持つ2つの文字列のうち、互いに異なる文字が現れる位置の数を表す指標です。
言い換えれば、一方の文字列をもう一方の文字列へと変換するために最低限必要な置換の回数ともいえます。ハミング距離は情報理論やエラー検出・訂正の分野で広く活用されており、通常は同じ長さの文字列同士に対して測定されます。
本記事では、同じ長さの2つの文字列 str1 と str2 を受け取り、それらのハミング距離を計算して返すJavaScript関数を作成します。
実装コード
以下がその実装例です。
const str1 = 'Hello World';
const str2 = 'Heeyy World';
const findHammingDistance = (str1 = '', str2 = '') => {
let distance = 0;
if (str1.length === str2.length) {
for (let i = 0; i < str1.length; i++) {
if (str1[i].toLowerCase() !== str2[i].toLowerCase()) {
distance++;
}
}
return distance;
}
return 0;
};
console.log(findHammingDistance(str1, str2));コードの解説
この関数の処理の流れは以下の通りです。
- まず、2つの文字列の長さが等しいかどうかを確認します。長さが異なる場合はハミング距離を定義できないため、0 を返します。
- 次に、各位置の文字を先頭から順に1つずつ比較します。比較の際には
toLowerCase()を使用し、大文字・小文字の違いを無視しています。 - 文字が異なるたびにカウンター
distanceを1ずつ増加させ、ループ終了後にその合計値を返します。
出力結果
上記のコードを実行すると、コンソールには次のように出力されます。
3
'Hello World' と 'Heeyy World' を比較すると、3番目・4番目・5番目の文字(l↔e、l↔y、o↔y)がそれぞれ異なるため、ハミング距離は 3 となります。
-
JavaScriptで文字列内の指定文字への最短距離を求める方法
問題概要英語の小文字アルファベットのみで構成された文字列 str を第1引数に、その文字列に必ず存在する1文字 char を第2引数にとる JavaScript 関数を作成する必要があります。この関数は、文字列 str 内の各文字について、char で指定された文字の中で最も近いものまでの距離を計算し、その結果を配列として返します。たとえば、次のような入力が与えられた場合を考えてみましょう。入力:const str = somestring; const char = s;出力:const output = [0, 1, 2, 1, 0, 1, 2, 3, 4, 5];出力の配列を見ると、イン
-
JavaScriptで「次に大きい要素までの距離」を求めるアルゴリズム
問題概要 数値の配列 arr を唯一の引数として受け取るJavaScript関数を作成します。 この関数の役割は、入力配列をもとに新しい配列を構築することです。新しい配列の各要素には、「現在の要素よりも大きい要素が右側に現れるまでの距離」(インデックスの差)を格納します。もし現在の要素より大きい要素が右側に存在しない場合は、対応する位置に 0 を入れます。最後に、この結果配列を返します。 入力例 const arr = [12, 13, 14, 11, 16, 10, 12, 17, 19, 18]; 出力例 const output = [1, 1, 2, 1, 3, 1, 1, 1,