查找字符串数组的交集-JavaScript

我们有两个Numbers数组,我们需要编写一个函数,比如说intersection()计算它们的交集并返回一个包含任意顺序的相交元素的数组。结果中的每个元素应出现在两个数组中的次数相同。

例如-

如果输入为-

arr1 = ['hello', 'world', 'how', 'are', 'you'];

arr2 = ['hey', 'world', 'can', 'you', 'rotate'];

那么输出应该是-

Output: ['world', 'you'];

方法

如果对数组进行了排序,我们可以使用双指针方法,最初都将其指向各自数组的开始为0,然后可以继续增加对应的指针,这将是O(m + n)复杂的wrt时间其中m和n是数组的大小。

但是因为我们有未排序的数组,所以在对数组进行排序然后再使用这种方法时没有逻辑,因此我们将检查first的每个值与第二个的值,并构造一个交集数组。这将花费我们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' ]

以上是 查找字符串数组的交集-JavaScript 的全部内容, 来源链接: utcz.com/z/326571.html

回到顶部