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

JavaScriptで最長の単語を形成する


問題

最初の引数としてランダムな英語のアルファベット文字列strを取り、2番目の引数として文字列の配列arrを受け取るJavaScript関数を作成する必要があります。

この関数のタスクは、文字列strからいくつかの文字を削除して、配列arrに存在する最長の単語を確認することです。この関数は、可能な限り長い文字列を返す必要があります。

そのような文字列が存在しない場合は、空の文字列を返す必要があります。

たとえば、関数への入力が-

の場合
const str = 'sdgfdfghdjh';
const arr = ['sdf', 'fghj', 'gfdfg', 'absc', 'a', 'hasl'];

その場合、出力は-

になります。
const output = 'gfdfg';

出力の説明:

配列の1番目と2番目の要素は文字列から文字を削除することで形成できますが、「gfdfg」は文字列strから形成できる最長の文字列(5)です。

このためのコードは-

になります
const str = 'sdgfdfghdjh';
const arr = ['sdf', 'fghj', 'gfdfg', 'absc', 'a', 'hasl'];
const findLongestWord = (str = '', arr = []) => {
   arr.sort((a, b) => {
      if (a.length !== b.length) {
         return b.length - a.length;
      };
      return a.localeCompare(b);
   });
   for(const word of arr){
      let index = -1;
      for(const char of word){
         index = str.indexOf(char, index + 1);
         if(index < 0){
            break;
         };
      };
      if (index >= 0){
         return word;
      };
   };
   return '';
};
console.log(findLongestWord(str, arr));

コードの説明:

私たちが行った手順は次のとおりです-

  • 配列arrを最初に長さで並べ替え、次に辞書式順序で並べ替えます。

  • arrの各単語をループします。単語のすべての文字が文字列strに含まれていない場合は、単に戻ります。

  • そして、すべての単語が一致した場合、その単語を返します。

また、辞書はすでに並べ替えられているので、最初の一致が答えであることを保証できます。

出力

コンソールの出力は-

になります
gfdfg

  1. JavaScriptで最長の連続結合を検索する

    問題 最初で唯一の引数として、数値のペアarrの配列を受け取るJavaScript関数を作成する必要があります。すべてのペアで、最初の数字は常に2番目の数字よりも小さくなります。 ここで、b

  2. JavaScriptで最も長く増加するシーケンスの総数

    問題 最初で唯一の引数として、数値の配列arrを受け取るJavaScript関数を作成する必要があります。 私たちの関数は、最も長く増加するサブシーケンス(連続または非連続)の数を見つけるために必要です。 たとえば、関数への入力が 入力 const arr = [2, 4, 6, 5, 8]; 出力 const output = 2; 出力の説明 最も長く増加する2つのサブシーケンスは、[2、4、5、8]と[2、4、6、8]です。 例 以下はコードです- const arr = [2, 4, 6, 5, 8]; const countSequence = (arr) =&