JavaScriptで文字列から最短の単語を検索する方法
JavaScriptで、文字列を受け取りその中から最も短い単語を返す関数を作成する方法を紹介します。
たとえば、入力文字列が以下の場合:
const str = 'This is a sample string';
期待される出力は次のようになります:
const output = 'a';
実装コード
この処理を実現するコードは以下の通りです:
const str = 'This is a sample string';
const findSmallest = str => {
const strArr = str.split(' ');
const creds = strArr.reduce((acc, val) => {
let { length, word } = acc;
if(val.length < length){
length = val.length;
word = val;
};
return { length, word };
}, {
length: Infinity,
word: ''
});
return creds.word;
};
console.log(findSmallest(str));出力結果
コンソールには以下のように表示されます:
a
コードの解説
1. split()で文字列を配列に分割
str.split(' ') により、文字列を半角スペースで区切り、単語の配列に変換しています。例の文字列は ['This', 'is', 'a', 'sample', 'string'] という配列になります。
2. reduce()で最短の単語を追跡
reduce() を使って配列を順番に走査し、それまでに見つかった最短の単語を累積値(アキュムレータ)として保持します。初期値を { length: Infinity, word: '' } とすることで、最初に比較した単語が必ず現在の最短記録より短くなり、正しく処理が始まる仕組みです。
3. 結果を返す
すべての単語との比較が完了した後、creds.word に格納された最短の単語を返り値として返します。この例では1文字の単語「a」が出力されます。
-
JavaScriptで文字列の最小削除回数を求める方法
問題の概要例えば、次のようなバイナリ文字列(「0」と「1」だけで構成された文字列)があるとします。const str = 001001;私たちの課題は、このような文字列を唯一の引数として受け取るJavaScript関数を作成することです。関数の役割は、入力された文字列に対して隣り合う2つの文字が同じにならないようにするために必要な最小削除回数を計算し、その結果を返すことです。例えば、上記の文字列の場合、出力は次のようになります。const output = 2;これは、インデックス0と3にある「0」を削除すると、新しい文字列が「0101」となり、隣接する文字がすべて異なる最長の文字列になるため
-
JavaScriptで文字列内の最長の母音部分文字列の長さを求める方法
問題 文字列を引数として受け取るJavaScriptの関数を作成する必要があります。この関数は、母音(a、e、i、o、u)のみで構成される連続した部分文字列の中から、最も長いものの長さを返さなければなりません。 アプローチ この問題は、文字列を先頭から順番に走査しながら、現在連続している母音の数をカウントすることで解決できます。具体的な手順は以下の通りです。 cur:現在連続している母音の数を記録するカウンター変数 max:これまでに見つかった最長の母音連鎖の長さを保持する変数 走査中の文字が母音であれば cur を1増やし、max より大きければ max を更新する 子音に遭遇した場合は