JavaScript で文字列内の最長の単語を見つける 3 つの方法 (推奨)

JavaScript で文字列内の最長の単語を見つける 3 つの方法 (推奨)

この記事は、Free Code Camp の基本アルゴリズム スクリプト「文字列内の最長の単語を見つける」に基づいています。

このアルゴリズムでは、各単語を調べて、各単語に含まれる文字の数を数えます。次に、カウントを比較して、どの単語に最も多くの文字数があるかを判断し、最も長い単語の長さを返します。

この記事では3つの方法について説明します。最初は FOR ループを使用し、2 番目は sort() メソッドを使用し、3 番目は Reduce() メソッドを使用します。

アルゴリズムの課題

  • 指定された文の中で最も長い単語の長さを返します。
  • 回答は数字でなければなりません。

提供されたテストケース

  • findLongestWord("素早い茶色のキツネは怠け者の犬を飛び越えた")は数値を返す
  • findLongestWord("素早い茶色のキツネは怠け者の犬を飛び越えた")は6を返す
  • findLongestWord("May the force be with you") は 5 を返します
  • findLongestWord("Google do a barrel roll")は6を返します
  • findLongestWord("無負荷のツバメの平均対気速度はいくらですか")は8を返します。
  • findLongestWord("耳鼻咽喉科のような非常に長い単語を試したらどうなるか")は19を返します
関数findLongestWord(str) {
 str.length を返します。
}
findLongestWord("素早い茶色のキツネが怠け者の犬を飛び越えた");

1. FORループを使用して最長の単語を見つける

このソリューションでは、String.prototype.split()メソッドを使用します。

  • split() メソッドは、文字列を部分文字列に分割して、文字列オブジェクトを文字列配列に分割します。

split()メソッドの括弧の間にスペースを追加する必要があります。

var strSplit = “素早い茶色のキツネが怠け者の犬を飛び越えた”split(' ');

単語の配列が出力されます:

var strSplit = ["The", "quick", "brown", "fox", "jumped", "over", "the", "lazy", "dog"];

括弧の間にスペースを追加しないと、次の出力が得られます。

var strSplit = 
[“T”、“h”、“e”、“ ”、“q”、“u”、“i”、“c”、“k”、“ ”、“b”、“r”、“o”、“w”、“n”、“ ”、“f”、“o”、“x”、“ ”、“j”、“u”、“m”、“p”、“e”、“d”、“ ”、“o”、“v”、“e”、“r”、“ ”、“t”、“h”、“e”、“ ”、“l”、“a”、“z”、“y”、“ ”、“d”、“o”、“g”];
関数findLongestWord(str) {
 // ステップ1. 文字列を文字列の配列に分割する
 var strSplit = str.split(' ');
 // var strSplit = "素早い茶色のキツネが怠け者の犬を飛び越えた".split(' ');
 // var strSplit = ["The", "quick", "brown", "fox", "jumped", "over", "the", "lazy", "dog"];
 
 // ステップ2. 最長単語の長さを保持する変数を初期化する
 var 最長単語 = 0;

 // ステップ3. FORループを作成する
 for(var i = 0; i < strSplit.length; i++){
 if(strSplit[i].length > longestWord){ // strSplit[i].length が比較対象の単語より大きい場合...
 longestWord = strSplit[i].length; // ...longestWordはこの新しい値を取得します
  }
 }
 /* ここでは strSplit.length = 9
  各反復について: i = ? i < strSplit.length? i++ if(strSplit[i].length > longestWord)? longestWord = strSplit[i].length
  1 回目の反復: 0 はい 1 if("The".length > 0)? => if(3 > 0)? longestWord = 3
  2 回目の反復: 1 yes 2 if("quick".length > 3)? => if(5 > 3)? longestWord = 5 
  3 回目の反復: 2 はい 3 if("brown".length > 5)? => if(5 > 5)? longestWord = 5 
  4 回目の反復: 3 はい 4 if("fox".length > 5)? => if(3 > 5)? longestWord = 5 
  5 回目の反復: 4 はい 5 if("jumped".length > 5)? => if(6 > 5)? longestWord = 6 
  6 回目の反復: 5 はい 6 if("over".length > 6)? => if(4 > 6)? longestWord = 6 
  7 回目の反復: 6 はい 7 if("the".length > 6)? => if(3 > 6)? longestWord = 6
  8 回目の反復: 7 はい 8 if("lazy".length > 6)? => if(4 > 6)? longestWord = 6 
  9 回目の反復: 8 はい 9 if("dog".length > 6)? => if(3 > 6)? longestWord = 6 
  10回目の繰り返し: 9 いいえ    
  FORループの終了*/

 //ステップ4. 最長の単語を返す
 longestWord を返す; // 6
}

findLongestWord("素早い茶色のキツネが怠け者の犬を飛び越えた");

コメントはありません:

関数findLongestWord(str) {
 var strSplit = str.split(' ');
 var 最長単語 = 0;
 for(var i = 0; i < strSplit.length; i++){
 (strSplit[i].length > longestWord)の場合{
 最長単語 = strSplit[i].length;
  }
 }
 longestWord を返します。
}
findLongestWord("素早い茶色のキツネが怠け者の犬を飛び越えた");

2. sort() メソッドを使用して最長の単語を見つける

このソリューションでは、Array.prototype.sort() メソッドを使用して、いくつかのソート基準に従って配列をソートし、この配列の最初の要素の長さを返します。

  • sort() メソッドは配列の要素をソートし、配列を返します。

この場合、配列をソートするだけで

var sortArray = [“The”、“quick”、“brown”、“fox”、“jumped”、“over”、“the”、“lazy”、“dog”].sort();

次のような出力が得られます。

var sortArray = ["The", "brown", "dog", "fox", "jumped", "lazy", "over", "quick", "the"];

Unicode では、数字は大文字の前にあり、大文字は小文字の前にあります。

何らかのソート基準に従って要素をソートする必要がある

[].sort(function(firstElement, secondElement) { return secondElement.length — firstElement.length; })

配列内の 2 番目の要素の長さと最初の要素の長さを比較します。

関数findLongestWord(str) {
 // ステップ1. 文字列を文字列の配列に分割する
 var strSplit = str.split(' ');
 // var strSplit = "素早い茶色のキツネが怠け者の犬を飛び越えた".split(' ');
 // var strSplit = ["The", "quick", "brown", "fox", "jumped", "over", "the", "lazy", "dog"];
 
 // ステップ2. 配列内の要素を並べ替える
 var longestWord = strSplit.sort(function(a, b) { 
 b.length - a.length を返します。
 });
 /* ソート処理
 ab b.length a.length var longestWord
 「その」「速い」5 3 [「速い」、「その」]
 「クイック」 「ブラウン」 5 5 [「クイック」、「ブラウン」、「ザ」] 
 「茶色」 「キツネ」 3 5 [「素早い」、「茶色」、「その」、「キツネ」]
 「キツネ」 「ジャンプした」 6 3 [「ジャンプした」、素早い、「茶色の」、「その」、「キツネ」]
 「飛び越えた」 「飛び越えた」 4 6 [「飛び越えた」、素早い、「茶色い」、「飛び越えた」、「その」、「キツネ」]
 「越えて」「その」3 4 [「飛び越えた」「素早く」「茶色の」「越えて」「その」「キツネ」「その」]
 「その」「怠け者」4 3 [「飛び跳ねた」「素早い」「茶色の」「越えた」「怠け者」「その」「キツネ」「その」]
 「怠け者」「犬」3 4 [「ジャンプした」「素早い」「茶色の」「越えた」「怠け者」「その」「キツネ」「その」「犬」]
 */
 
 // ステップ3. 配列の最初の要素の長さを返す
 return longestWord[0].length; // var longestWord = ["jumped", "quick", "brown", "over", "lazy", "The", "fox", "the", "dog"];
        // longestWord[0]="jumped" => jumped".length => 6
}

findLongestWord("素早い茶色のキツネが怠け者の犬を飛び越えた");

コメントはありません:

関数findLongestWord(str) {
 var longestWord = str.split(' ').sort(function(a, b) { return b.length - a.length; });
 longestWord[0].lengthを返します。
}
findLongestWord("素早い茶色のキツネが怠け者の犬を飛び越えた");

3.reduce()メソッドを使用して最長の単語を見つける

このソリューションでは、Array.prototype.reduce() を使用します。

  • Reduce() メソッドは、リザーバーと配列の各値 (左から右へ) に関数を適用して、単一の値に減らします。

Reduce() は、配列内の各要素に対してコールバック関数を 1 回実行します。

2 番目の引数として初期値を指定することもできます。ここでは空の文字列 "" を追加します。

[].reduce(function(前の値、現在の値) {...}, "");
関数findLongestWord(str) {
 // ステップ1. 文字列を文字列の配列に分割する
 var strSplit = str.split(' ');
 // var strSplit = "素早い茶色のキツネが怠け者の犬を飛び越えた".split(' ');
 // var strSplit = ["The", "quick", "brown", "fox", "jumped", "over", "the", "lazy", "dog"];

 // ステップ2.reduceメソッドを使用する
 var longestWord = strSplit.reduce(function(longest, currentWord) {
 (現在の単語の長さ > 最長の長さ)
  現在の単語を返します。
 それ以外
  最長を返します。
 }, "");
 
 /* プロセスを削減
 currentWord 最長 currentWord.length longest.length if(currentWord.length > longest.length)? var longestWord
 「その」 「」 3 0 はい 「その」
 「速い」 「その」 5 3 はい 「速い」
 「茶色」 「速い」 5 5 いいえ 「速い」
 「キツネ」 「素早い」 3 5 いいえ 「素早い」
 「ジャンプした」 「速い」 6 5 はい 「ジャンプした」
 「越えた」 「飛び越えた」 4 6 いいえ 「飛び越えた」
 「その」「飛び降りた」3 6 いいえ「飛び降りた」
 「怠け者」 「ジャンプした」 4 6 いいえ 「ジャンプした」
 「犬」「飛び跳ねた」3 6 いいえ「飛び跳ねた」
 */
 
 // ステップ3. longestWordの長さを返す
 return longestWord.length; // var longestWord = "jumped" 
        // longestWord.length => "jumped".length => 6
}

findLongestWord("素早い茶色のキツネが怠け者の犬を飛び越えた");

コメントはありません:

関数findLongestWord(str) {
 var longestWord = str.split(' ').reduce(function(longest, currentWord) {
 currentWord.length > longest.length を返します。currentWord: longest;
 }, "");
 longestWord.length を返します。
}
findLongestWord("素早い茶色のキツネが怠け者の犬を飛び越えた");

これで、JavaScript で文字列内の最長の単語を見つける 3 つの方法についての記事は終了です。js で文字列内の最長の単語を見つける方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • 一般的な JavaScript 文字列メソッド 28 個と使用方法のヒントのまとめ
  • JavaScript でよく使われるいくつかの文字列メソッドの概要 (初心者必読)
  • 日付型フィールドをJSON文字列に変換するJavaメソッド
  • JavaScript 文字列を数値に変換する簡単な方法
  • JavaScript 文字列処理の一般的な操作方法のまとめ
  • Javascript 文字列メソッドの詳細な説明

<<:  MySQL 5.7.17 のインストールと設定方法のグラフィック チュートリアル (Windows)

>>:  MySQL 5.7.17 winx64 のインストールと設定のグラフィックチュートリアル

推薦する

データベースの水平セグメンテーションを実装するための2つのアイデア

導入インターネット アプリケーションの普及に伴い、膨大なデータの保存とアクセスがシステム設計における...

MySQL の従来のソート、カスタム ソート、中国語のピンイン文字によるソート

MySQL の通常のソート、カスタム ソート、中国語のピンイン文字によるソート。実際の SQL を記...

WeChatアプレットのオーディオコンポーネントがiOSで再生できない問題の解決策

解決策:クリック イベントをオーディオ コンポーネントにバインドし、再生メソッドと一時停止メソッドを...

ユーザーエクスペリエンスの76の経験ポイントの要約

ウェブサイト体験の分類1. 感覚体験:快適性を重視した視聴覚体験をユーザーに提供します。 2. イン...

NestJsはMongooseを使用してMongoDBを操作する

最近、NestJs フレームワークを学び始めました。学習コストは他のフレームワークよりもはるかに高く...

Vue3 プロジェクトで WeChat 認証ログインをエレガントに実装する方法

目次序文準備する実装のアイデアコードについて要約する序文WeChat 認証ログインは、WeChat ...

W3C チュートリアル (10): W3C XQuery アクティビティ

XQuery は、XML ドキュメントからデータを抽出するための言語です。 XQuery は、XML...

MySQL Community Server 圧縮パッケージのインストールと設定方法

今日は、MySQL をインストールしたかったので、公式 Web サイトにアクセスして、MySQL の...

JSでHTML本文のスタイルを変更する

目次1. 本来の定義2. JS操作、幅の変更を例に3. 効果: 幅が変更されました 1. 本来の定義...

Javascript イベントキャプチャとバブリングメソッドの詳細な説明

目次1. イベント処理モデル1. イベントバブリング(1)3つのdiv要素にイベントをバインドする(...

Ubuntu 18.04 は mysql 5.7.23 をインストールします

以前、Ubuntu 16.04 に MySQL をスムーズにインストールしました。今回、Ubuntu...

HTML テーブル マークアップ チュートリアル (14): テーブル ヘッダー

<br />HTML 言語では、タグを使用してテーブルにタイトルを自動的に追加できます。...

Linux 上のカラフルな猫

Linux システムを使用したことがある友人なら、 catコマンドを使用したことがあるはずです。もち...

IframeとFRAMEの違いの分析

1. Iframe タグの使用<br />Iframe については、「忘れられた隅」に放...

ノードイベントループにおけるイベント実行の順序

目次イベントループブラウザ環境イベントループノード環境イベントループ6つのステージ(1)setTim...