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

文字列の配列の共通部分を見つける-JavaScript


Numbersの配列が2つあり、関数を作成する必要があります。たとえば、intersection()は、それらの交差を計算し、交差する要素を任意の順序で含む配列を返します。結果の各要素は、両方の配列に表示される回数だけ表示されるはずです。

例-

入力が-

の場合
arr1 = ['hello', 'world', 'how', 'are', 'you'];
arr2 = ['hey', 'world', 'can', 'you', 'rotate'];

その場合、出力は-

になります。
Output: ['world', 'you'];

アプローチ

配列がソートされていれば、最初は両方ともそれぞれの配列の先頭を0に向けて、2つのポインターのアプローチを使用でき、対応するポインターの増加に進むことができ、それはO(m + n)複素数w.r.tでした。ここで、mとnは配列のサイズです。

ただし、並べ替えられていない配列があるため、配列を並べ替えてからこのアプローチを使用するロジックがないため、最初の値を2番目の値と照合して、交差配列を作成します。これにはO(n ^ 2)時間かかります。

以下はコードです-

arr1 = ['hello', 'world', 'how', 'are', 'you'];
arr2 = ['hey', 'world', 'can', 'you', 'rotate'];
const intersectElements = (arr1, arr2) => {
   const res = [];
   const { length: len1 } = arr1;
   const { length: len2 } = arr2;
   const smaller = (len1 < len2 ? arr1 : arr2).slice();
   const bigger = (len1 >= len2 ? arr1 : arr2).slice();
   for(let i = 0; i < smaller.length; i++) {
      if(bigger.indexOf(smaller[i]) !== -1) {
         res.push(smaller[i]);
         bigger.splice(bigger.indexOf(smaller[i]), 1, undefined);
      }
   };
   return res;
};
console.log(intersectElements(arr1, arr2));

出力

これにより、コンソールに次の出力が生成されます-

[ 'world', 'you' ]

  1. JavaScriptの2つの配列からの文字列の長さの最大絶対差

    問題 文字列のa1とa2の2つの配列を受け取るJavaScript関数を作成する必要があります。各文字列は、aからzまでの文字で構成されます。 xを最初の配列の任意の文字列、yを2番目の配列の任意の文字列とします。 関数は-の値を見つける必要があります max(abs(length(x) − length(y))) 例 以下はコードです- const arr1 = ["hoqq", "bbllkw", "oox", "ejjuyyy", "plmiis", "xxxz

  2. JavaScriptで2つの配列のバランスをとる

    問題 最初と2番目の引数として、数値の2つの配列arr1とarr2を受け取るJavaScript関数を作成する必要があります。 arr1とarr2の要素の合計は異なります。この関数は、最初の配列から1つの要素を選択し、それを2番目の配列にプッシュし、2番目の配列から1つの要素を選択して、両方の配列の要素の合計が等しくなるように最初の配列にプッシュする必要があります。これら2つの要素の配列を返す必要があります。 たとえば、関数への入力が 入力 const arr1 = [1, 2, 5]; const arr2 = [2, 4]; 出力 const output = [5, 4];