কম্পিউটার

স্ট্রিং এর অ্যারেগুলির ছেদ খুঁজে বের করা - জাভাস্ক্রিপ্ট


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

যেমন −

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

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

তারপর আউটপুট −

হওয়া উচিত
Output: ['world', 'you'];

পন্থা

অ্যারেগুলি সাজানো থাকলে, আমরা প্রাথমিকভাবে সংশ্লিষ্ট অ্যারের শুরুতে 0 নির্দেশ করে দুটি পয়েন্টার পদ্ধতি ব্যবহার করতে পারতাম এবং আমরা সংশ্লিষ্ট পয়েন্টার বাড়ানোর সাথে এগিয়ে যেতে পারতাম এবং এটি O(m+n) জটিল w.r.t. সময় যেখানে 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. জাভাস্ক্রিপ্টে দুটি অ্যারে ব্যালেন্স করা