কম্পিউটার টিউটোরিয়াল

স্ট্রিং অ্যারে-এর ইন্টারসেকশন বের করা - JavaScript


আমাদের কাছে দুটি সংখ্যা অ্যারে আছে, এবং আমাদের একটি ফাংশন লিখতে হবে, ধরুন intersection() যা তাদের ইন্টারসেকশন গণনা করবে এবং একটি অ্যারে রিটার্ন করবে যেটি ইন্টারসেক্টিং উপাদানগুলো যেকোনো ক্রমে ধারণ করবে। ফলাফলে প্রতিটি উপাদান ততবারই উপস্থিত থাকবে যতবার সেটি দুটি অ্যারে-ইতে দেখায়।

উদাহরণ −

যদি ইনপুট হয় −

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

তবে আউটপুট হবে −

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

অ্যাপ্রোচ

যদি অ্যারেগুলো সর্টেড থাকত, আমরা টু পয়েন্টার অ্যাপ্রোচ ব্যবহার করতে পারতাম শুরুতে দুটি পয়েন্টার ০-তে থাকত এবং আমরা সংশ্লিষ্ট পয়েন্টার বাড়াতে পারতাম এবং সেটি O(m+n) টাইম কমপ্লেক্সিটি দিত যেখানে m এবং n অ্যারে দুটির আকার।

কিন্তু যেহেতু আমাদের আনসোর্টেড অ্যারে আছে, অ্যারেগুলো সর্ট করে এই অ্যাপ্রোচ ব্যবহার করার কোনো লজিক নেই, আমরা প্রথম অ্যারে-এর প্রতিটি ভ্যালু দ্বিতীয় অ্যারেতে চেক করব এবং একটি ইন্টারসেকশন অ্যারে তৈরি করব। এটি আমাদের 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. জাভাস্ক্রিপ্টে ইন্টারভাল অ্যারে-এর ইন্টারসেকশন খুঁজে বের করা

  2. জাভাস্ক্রিপ্টে দুটি অ্যারেতে অনুপস্থিত একক সংখ্যা বের করা

  3. জাভাস্ক্রিপ্টে দুটি স্ট্রিং অ্যারেতে দৈর্ঘ্যের পার্থক্যের সর্বোচ্চ মান

  4. জাভাস্ক্রিপ্টে দুটি অ্যারে সমতুল্য করা