JavaScriptで文字列の最小削除回数を求める方法
問題の概要
例えば、次のようなバイナリ文字列(「0」と「1」だけで構成された文字列)があるとします。
const str = '001001';
私たちの課題は、このような文字列を唯一の引数として受け取るJavaScript関数を作成することです。
関数の役割は、入力された文字列に対して隣り合う2つの文字が同じにならないようにするために必要な最小削除回数を計算し、その結果を返すことです。
例えば、上記の文字列の場合、出力は次のようになります。
const output = 2;
これは、インデックス0と3にある「0」を削除すると、新しい文字列が「0101」となり、隣接する文字がすべて異なる最長の文字列になるためです。
アルゴリズムの考え方
この問題は実はとてもシンプルに解くことができます。ポイントは次のとおりです。
- 隣り合う文字が同じペア(例:「00」「11」)を見つけるたびに、そのうち1文字を削除すればよい。
- したがって、「隣接する同一文字ペアの出現回数」を数え上げれば、それがそのまま最小削除回数となる。
コード例
const str = '001001';
const minimumDeletions = (str = '') => {
let count = 0;
const { length } = str;
for(let i = 0; i < length; i++){
if (str[i] === str[i + 1]){
count++;
};
}
return count;
};
console.log(minimumDeletions(str));
コードの解説
このコードでは、文字列を先頭から順に走査し、現在の文字 str[i] と次の文字 str[i + 1] を比較しています。両者が一致していた場合はカウントを1増やします。ループが終了した時点での count の値が、求めるべき最小削除回数になります。計算量はO(n)で、文字列の長さに比例して一度だけ走査すればよいため、非常に効率的です。
出力結果
コンソールには次のように出力されます。
2
-
JavaScriptの文字列入門|定義方法から比較演算子までわかりやすく解説
JavaScriptにおける文字列(String)は、他の多くのプログラミング言語と同様に、テキスト形式でデータを保持するデータ型です。Webアプリケーションにおいて文字列がよく使われる場面のひとつが、フォームからのユーザー入力の保持です。たとえば検索フォームでは、ユーザーが入力した検索キーワードは文字列として保存されます。 ユーザーが検索フォームに入力して送信すると、送信された文字列に対して比較操作が行われます。これは、一致する情報を見つけ出し、その結果をユーザーに返すためです。比較操作には「=」「==」「===」「」といったJavaScriptの演算子が使われ、これらは文字列が持つ値を比
-
JavaScriptで文字列を真偽値(Boolean)に変換する方法
JavaScriptでは、文字列が「true」というリテラルと一致するかどうかを比較演算子で判定することで、文字列を実質的に真偽値(Boolean)として扱うことができます。ここでは、==(緩い等価比較)と===(厳密等価比較)の2つの方法を使った具体例を紹介します。 サンプルコード <!DOCTYPE html> <html> <head> <style> body { font-family: &