JavaScriptの最長の文字列チェーンの長さ
ワードチェーン
word1の任意の場所に正確に1文字を追加して、word2と等しくできる場合に限り、word1がword2の前身であるとしましょう。たとえば、「abc」は「abac」の前身です。
ワードチェーンは、k> =1の単語[word_1、word_2、...、word_k]のシーケンスです。ここで、word_1はword_2の先行であり、word_2はword_3の先行です。
問題
最初で唯一の引数として、文字列の配列arrを受け取るJavaScript関数を作成する必要があります。
配列arrの各文字列は、英語の小文字で構成されています。この関数は、指定された配列arrから選択された単語を含む単語チェーンの可能な限り長い長さを返す必要があります。
たとえば、関数への入力が-
の場合const arr = ["a","b","ba","bca","bda","bdca"];
その場合、出力は-
になります。const output = 4;
出力の説明:
最も長い単語チェーンの1つは、「a」、「ba」、「bda」、「bdca」です。
例
このためのコードは-
になりますconst arr = ["a","b","ba","bca","bda","bdca"]; const longestStrChain = (arr) => { arr.sort((a, b) => a.length - b.length); const isPredecessor = (word1 = '', word2 = '') => { if(Math.abs(word1.length - word2.length) !== 1){ return false; }; for(let i = 0; i < word2.length; i++){ const word = word2.slice(0, i) + word2.slice(i + 1); if(word === word1){ return true; }; }; return false; }; const array = []; let max = 0; for(let i = arr.length - 1; i >= 0; i--){ array[i] = 1; for(let j = arr.length - 1; j > i; j--){ if(isPredecessor(arr[i], arr[j])){ array[i] = Math.max( array[i], 1 + array[j], ); }; }; max = Math.max(max, array[i]); }; return max; }; console.log(longestStrChain(arr));
出力
そして、コンソールの出力は-
になります4
-
JavaScriptで最長の連続結合を検索する
問題 最初で唯一の引数として、数値のペアarrの配列を受け取るJavaScript関数を作成する必要があります。すべてのペアで、最初の数字は常に2番目の数字よりも小さくなります。 ここで、b
-
C++で最長の文字列チェーン
=1の一連の単語[word_1、word_2、...、word_k]です。ここで、word_1はword_2の先行であり、word_2はword_3の先行です。与えられた単語のリストから選択された単語を使用して、単語チェーンの可能な限り長い長さを見つける必要があります。 したがって、入力が[a、 b、 ba、 bca、 bda、 bdca]の場合、最長のチェーンの1つが[ a」、「ba」、「bda」、「bdca」]。 これを解決するには、次の手順に従います- マップを定義するdp、n:=単語配列のサイズ 長さに基づいて単語配列を並べ替える ret:=0 範囲0tn