JavaScriptで文字列から欠けているアルファベットを検索する方法
問題の概要
長さ m の文字列には、本来英語のアルファベットの先頭から m 文字が含まれているはずです。しかし、何らかの理由でそのうち 1 文字だけが抜け落ちてしまいました。つまり、現在の文字列には m-1 文字しか含まれていない状態です。
そこで今回のタスクは、このような文字列を引数として受け取り、欠けている 1 文字を見つけ出して返す関数を作成することです。
実装コード
以下が実際のコード例です −
const str = "acdghfbekj";
const missingCharacter = str => {
// 大文字・小文字の揺れをなくすため小文字に統一
const s = str.toLowerCase();
for(let i = 97; ; i++){
if(s.includes(String.fromCharCode(i))){
continue;
};
return String.fromCharCode(i);
};
return false;
};
console.log(missingCharacter(str));
コードの解説
この関数の仕組みは次の通りです −
- まず toLowerCase() で入力文字列をすべて小文字に変換し、大文字・小文字の違いによる判定漏れを防ぎます。
- ASCII コード 97(アルファベットの「a」)から順に、String.fromCharCode() を使って 1 文字ずつ生成していきます。
- includes() メソッドで、その文字が文字列内に存在するかどうかを確認します。存在する場合は continue で次の文字へ進みます。
- 存在しなかった時点で、それが欠けている文字だと確定できるので、その文字を即座に返して処理を終了します。
出力結果
コンソールには以下のように表示されます −
i
入力文字列 "acdghfbekj" には「a」から「k」までの文字のうち「i」だけが含まれていないため、関数は正しく「i」を返しています。このように、ループと includes() を組み合わせることで、欠落した文字をシンプルかつ効率的に特定できます。
-
JavaScriptで文字列の最小削除回数を求める方法
問題の概要例えば、次のようなバイナリ文字列(「0」と「1」だけで構成された文字列)があるとします。const str = 001001;私たちの課題は、このような文字列を唯一の引数として受け取るJavaScript関数を作成することです。関数の役割は、入力された文字列に対して隣り合う2つの文字が同じにならないようにするために必要な最小削除回数を計算し、その結果を返すことです。例えば、上記の文字列の場合、出力は次のようになります。const output = 2;これは、インデックス0と3にある「0」を削除すると、新しい文字列が「0101」となり、隣接する文字がすべて異なる最長の文字列になるため
-
JavaScriptで文字列内の指定した文字の直後にある次の文字を取得する方法
課題JavaScriptで、文字列 str と1文字の char を引数として受け取る関数を作成する必要があります。この関数の役割は、元の文字列の中で char が現れる箇所をすべて見つけ、それぞれの直後に存在する文字(存在する場合のみ)を取り出して、それらを連結した新しい文字列を返すことです。例えば、対象の文字が文字列の末尾に位置している場合、その直後に文字は存在しないため、結果には含まれません。実装例以下が実際のコードです。 { let res = ; for(let i = 0; i <