JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptで文字列内の最短・最長の単語を抽出する方法

文字列を受け取り、その中で最も短い単語最も長い単語をそれぞれ含む配列(2つの文字列値)を返すJavaScript関数を作成する必要があります。

問題の例

たとえば、次のような文字列が与えられたとします。

const str = "Hardships often prepare ordinary people for an extraordinary destiny";

この場合、期待される出力は以下のようになります。

const output = ["an", "extraordinary"];

解決のアプローチ

この関数は、以下の手順で実装できます。

  1. split(" ")メソッドを使って、文字列をスペースで分割し、単語の配列を生成します。
  2. 配列の最初の単語を「最小」と「最大」の初期値として設定します。
  3. 2番目以降の単語をループ処理し、各単語の長さを現在の最小値・最大値と比較します。
  4. より短い単語が見つかれば最小値を、より長い単語が見つかれば最大値を更新します。
  5. 最後に [min, max] の形式で結果を返します。

コード例

以下が実際のコードです。

const str = "Hardships often prepare ordinary people for an extraordinary destiny";

const largestSmallest = str => {
   const strArr = str.split(" ");
   let min = strArr[0];
   let max = strArr[0];
   for(let i = 1; i < strArr.length; i++){
      if(strArr[i].length < min.length){
         min = strArr[i];
      };
      if(strArr[i].length > max.length){
         max = strArr[i];
      };
   };
   return [min, max];
};

console.log(largestSmallest(str));

出力結果

コンソールに出力される結果は以下の通りです。

[ 'an', 'extraordinary' ]

コードの解説

このコードでは、まず split(" ") によって文字列をスペース区切りで分割し、単語の配列を作成しています。続いて、配列の先頭の要素を最小値・最大値の初期値とし、2番目以降の要素を順番に比較することで、最短の単語と最長の単語を一度の走査で効率的に見つけ出します。

このアルゴリズムの時間計算量は O(n) であり、文字列に含まれる単語の数に対して線形のパフォーマンスを発揮するため、長いテキストでも高速に動作します。なお、同じ長さの単語が複数ある場合は、先に出現した単語が優先されます。

  1. JavaScriptのTextEncoderとTextDecoderとは?文字列とバイト列の相互変換をわかりやすく解説

    JavaScriptでは、文字列とバイト列(バイナリデータ)を相互に変換したい場面がよくあります。そんなときに活躍するのが、TextEncoderとTextDecoderという2つの標準組み込みAPIです。本記事では、それぞれの役割と基本的な使い方を、実際に動くサンプルコードとともに解説します。 TextEncoderとは TextEncoderは、指定した文字列をUTF-8形式に変換(エンコード)するためのオブジェクトです。encode()メソッドに文字列を渡すと、変換結果がUint8Array(符号なし8ビット整数の配列)として返されます。 TextDecoderとは TextDecod

  2. 【C++】文字列内の最短語と最長語を検索するプログラムの作成方法

    問題概要 本記事では、与えられた文字列 str の中から最も短い単語(最短語)と最も長い単語(最長語)を検索するプログラムをC++で作成する方法を解説します。 問題の説明 ― 文字列が1つ与えられます。その文字列に含まれるすべての単語の中から、文字数が最も多い単語と最も少ない単語を求めます。なお、単語は半角スペースまたはNULL文字('\0')で区切られているものとします。 入力例 str = “Learn Programming at TutorialsPoint” 出力例 smallest word = at largest word = Tutor