この記事は、Free Code Camp の基本アルゴリズム スクリプト「文字列内の最長の単語を見つける」に基づいています。 このアルゴリズムでは、各単語を調べて、各単語に含まれる文字の数を数えます。次に、カウントを比較して、どの単語に最も多くの文字数があるかを判断し、最も長い単語の長さを返します。 この記事では3つの方法について説明します。最初は FOR ループを使用し、2 番目は sort() メソッドを使用し、3 番目は Reduce() メソッドを使用します。 アルゴリズムの課題
提供されたテストケース
関数findLongestWord(str) { str.length を返します。 } findLongestWord("素早い茶色のキツネが怠け者の犬を飛び越えた"); 1. FORループを使用して最長の単語を見つける このソリューションでは、String.prototype.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() メソッドを使用して、いくつかのソート基準に従って配列をソートし、この配列の最初の要素の長さを返します。
この場合、配列をソートするだけで 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() は、配列内の各要素に対してコールバック関数を 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 をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: MySQL 5.7.17 のインストールと設定方法のグラフィック チュートリアル (Windows)
>>: MySQL 5.7.17 winx64 のインストールと設定のグラフィックチュートリアル
目次問題を見つける1. 改行と復帰を削除する方法2. SELECTクエリで「改行と復帰」を無視する方...
目次1. autofs サービスの紹介2. Autofsのインストールと展開3. Autofs効果の...
目次マインドマップシンプルな理解インデックスモデルの進化二分探索木自己バランス型二分木BツリーB+ ...
最近 Linux をいじっていたので、nginx の新しいバージョンをインストールしたいと思いました...
目次1. 技術概要2. 技術的な詳細1. インターフェースからバックエンドデータを取得する2. フロ...
序文最近この問題に遭遇するまで、私は UTF-8 が文字セットの問題に対する普遍的な解決策だと考えて...
目次序文基礎を築くプロトタイプコンストラクタのプロパティ__プロト__プロトタイプチェーン改善する要...
この記事では、マウスがドロップダウンボックスの上を通過するときにドロップダウンボックスを表示するため...
Docker を使用して Angular プロジェクトをデプロイする方法は 2 つあります。1 つは...
CSS の float プロパティを正しく使用することは、カバーすべき内容が多く、ブラウザの互換性の...
この記事は主にMybatisでの動的SQL文の解析について紹介します。この記事のサンプルコードは非常...
序文最近、MySQL 6.0.x 以降の jar を使用する場合、コード URL リンクで serv...
エラー 1290 (HY000) : MySQL サーバーは –secure-file-priv オ...
FFmpeg flacをインストールする eric@ray:~$ sudo apt install ...
この記事の例では、参考のためにvueアップロード画像コンポーネントの具体的なコードを共有しています。...