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

JavaScriptの2つの配列で共通のストリークを見つける


リテラルの2つの配列を受け取るJavaScript関数を作成する必要があります。それらをarr1とarr2と呼びましょう。

関数は、配列内のリテラルの最も長い一般的なストリークを見つける必要があります。関数は最終的にそれらのリテラルの配列を返す必要があります。

例-

入力配列が-

の場合
const arr1 = ['a', 'b', 'c', 'd', 'e'];
const arr2 = ['k', 'j', 'b', 'c', 'd', 'w'];

その場合、出力配列は-

になります。
const output = ['b', 'c', 'd'];

以下はコードです-

const arr1 = ['a', 'b', 'c', 'd', 'e'];
const arr2 = ['k', 'j', 'b', 'c', 'd', 'w'];
const longestCommonSubsequence = (arr1 = [], arr2 = []) => {
   let str1 = arr1.join('');
   let str2 = arr2.join('');
   const arr = Array(str2.length + 1).fill(null).map(() => Array(str1.length + 1).fill(null));
   for (let j = 0; j <= str1.length; j += 1) {
      arr[0][j] = 0;
   }
   for (let i = 0; i <= str2.length; i += 1) {
      arr[i][0] = 0;
   }
   for (let i = 1; i <= str2.length; i += 1) {
      for (let j = 1; j <= str1.length; j += 1) {
         if (str1[j - 1] === str2[i - 1]) {
            arr[i][j] = arr[i - 1][j - 1] + 1;
         } else {
            arr[i][j] = Math.max(
               arr[i - 1][j],
               arr[i][j - 1],
            );
         }
      }
   }
   if (!arr[str2.length][str1.length]) {
      return [''];
   }
   const res = [];
   let j = str1.length;
   let i = str2.length;
   while (j > 0 || i > 0) {
      if (str1[j - 1] === str2[i - 1]) {
         res.unshift(str1[j - 1]);
         j -= 1;
         i -= 1;
      }
      else if (arr[i][j] === arr[i][j - 1]) {
         j -= 1;
      }
      else {
         i -= 1;
      }
   }
   return res;
};
console.log(longestCommonSubsequence(arr1, arr2));

出力

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

['b', 'c', 'd']

  1. JavaScriptでリテラルの2つの配列の間で欠落している数を見つける

    問題 arr1とarr2の2つの配列を受け取るJavaScript関数を作成する必要があります。 arr2は、arr1のシャッフルされた複製であり、要素が1つだけ欠落しています。 関数はその1つの要素を見つけて返す必要があります。 例 以下はコードです- const arr1 = [6, 1, 3, 6, 8, 2]; const arr2 = [3, 6, 6, 1, 2]; const findMissing = (arr1 = [], arr2 = []) => {    const obj = {};    for (let i =

  2. JavaScriptを使用して配列内のすべての一般的な要素の合計を見つける

    問題 3つの数値配列を受け取るJavaScript関数を作成する必要があります。この関数は、3つの配列すべてに共通するすべての数値の合計を返す必要があります。 例 以下はコードです- const arr1 = [4, 4, 5, 8, 3]; const arr2 = [7, 3, 7, 4, 1]; const arr3 = [11, 0, 7, 3, 4]; const sumCommon = (arr1 = [], arr2 = [], arr3 = []) => {    let sum = 0;    for(let i = 0; i