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

JavaScriptの異なる文字列間の類似点


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

例:

入力が-

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

その場合、出力は-

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

アプローチ:

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

ただし、並べ替えられていない配列があるため、配列を並べ替えてからこのアプローチを使用するロジックがないため、最初の値を2番目の値と照合して、intersectionarrayを作成します。

これには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のテンプレート文字列。

    ES6でテンプレートが導入され、文字列内に式を埋め込むことができるようになりました。 ‘’または“”引用符の代わりに、バッククォート( ``)を使用します。これらは文字列補間のはるかに優れた方法を提供し、式は$ {a+b}のような方法で埋め込むことができます。 +演算子よりもはるかに優れた構文を提供します。 以下はJavaScriptのテンプレート文字列のコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> &l

  2. JavaScriptでのテンプレート文字列のネスト

    以下は、JavaScriptでテンプレート文字列をネストするためのコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <style>