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

JavaScriptで設定されている最長の長さを見つけて返す


問題

最初で唯一の引数として、数値の配列arrを受け取るJavaScript関数を作成する必要があります。

長さNの配列arrには、0からN-1までのすべての整数が含まれています。私たちの関数は、集合Sの最長の長さを見つけて返すことになっています。ここで、S [i] ={A [i]、A [A [i]]、A [A [A [i]]]、...}以下のルールに。

Sの最初の要素がインデックス=iの要素A[i]の選択で始まり、Sの次の要素はA [A [i]]であり、次にA [A[A[i]]]…であると仮定します。同様に、Sで重複要素が発生する直前に追加を停止します。

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

の場合
const arr = [5, 4, 0, 3, 1, 6, 2];

次に、出力は次のようになります-

const output = 4;

出力の説明

A [0] =5、A [1] =4、A [2] =0、A [3] =3、A [4] =1、A [5] =6、A [6] =2.

最長のS[K]の1つ:

S[0] = {A[0], A[5], A[6], A[2]} = {5, 6, 2, 0}

以下はコードです-

const arr = [5, 4, 0, 3, 1, 6, 2];
const arrayNesting = (arr = []) => {
   const visited = {}
   const aux = (index) => {
      if (visited[index]) {
         return 0
      }
      visited[index] = true
      return aux(arr[index], visited) + 1
   }
      let max = 0
      arr.forEach((n, index) => {
         if (!visited[index]) {
            max = Math.max(max, aux(index))
         }
   )
   return max
}
console.log(arrayNesting(arr));

出力

以下はコンソール出力です-

4

  1. JavaScriptの最長の文字列チェーンの長さ

    ワードチェーン word1の任意の場所に正確に1文字を追加して、word2と等しくできる場合に限り、word1がword2の前身であるとしましょう。たとえば、「abc」は「abac」の前身です。 =1の単語[word_1、word_2、...、word_k]のシーケンスです。ここで、word_1はword_2の先行であり、word_2はword_3の先行です。 問題 最初で唯一の引数として、文字列の配列arrを受け取るJavaScript関数を作成する必要があります。 配列arrの各文字列は、英語の小文字で構成されています。この関数は、指定された配列arrから選択された単語を含む単語チ

  2. JavaScriptを使用して、文字列内で最も長く連続して繰り返される文字とその長さを検索する

    問題 文字列を取り込むJavaScript関数を作成する必要があります。この関数は、正確に2つの要素の配列を返す必要があります。最初の要素は文字列内で最も多く連続して出現する文字であり、2番目は出現数です。 例 以下はコードです- const str = 'tdfdffddffsdsfffffsdsdsddddd'; const findConsecutiveCount = (str = '') => {    let res='';    let count=1;    le