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

জাভাস্ক্রিপ্টে অ্যারেতে সবচেয়ে লম্বা আনকমন সাবস্ট্রিং খুঁজে বের করা


সাবসিকোয়েন্স

এই সমস্যার জন্য, সাবসিকোয়েন্স বলতে একটি সিকোয়েন্সকে বুঝায় যেটি অন্য একটি সিকোয়েন্স থেকে কিছু ক্যারেক্টার ডিলিট করে (অর্ডার পরিবর্তন ছাড়া) প্রাপ্ত হয়। যেকোনো স্ট্রিং নিজের সাবসিকোয়েন্স, এবং খালি স্ট্রিং যেকোনো স্ট্রিংয়ের সাবসিকোয়েন্স।

সমস্যা

আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা একটি স্ট্রিং অ্যারে একমাত্র আর্গুমেন্ট হিসেবে নেবে। ফাংশনটি তাদের মধ্যে সবচেয়ে লম্বা আনকমন সাবসিকোয়েন্সের দৈর্ঘ্য খুঁজে বের করবে।

লংগেস্ট আনকমন সাবসিকোয়েন্স বলতে বুঝায়, অ্যারেতে যেকোনো একটি স্ট্রিংয়ের সাবসিকোয়েন্স যা অ্যারেতে অন্য কোনো স্ট্রিংয়ের সাবসিকোয়েন্স নয়।

যদি এমন কোনো সাবসিকোয়েন্স না থাকে, তবে -1 রিটার্ন করবে।

উদাহরণ:

const arr = ["aba", "cdc", "eae"];

আউটপুট হবে:

const output = 3;

আউটপুট ব্যাখ্যা:

"aba", "cdc" এবং "eae" সবই দৈর্ঘ্য ৩-এর বৈধ আনকমন সাবসিকোয়েন্স।

উদাহরণ

কোডটি নিচের মতো:

const arr = ["aba", "cdc", "eae"]; const longestUncommon = (strs) => { const map = {}; const arr = []; let max = -1; let index = -1; for(let i = 0; i < strs.length; i++){ map[strs[i]] = (map[strs[i]] || 0) + 1; if(map[strs[i]] > 1){ if(max < strs[i].length){ max = strs[i].length; index = i; } } } if(index === -1) { strs.forEach(el =>{ if(el.length > max) max = el.length; }) return max; } for(let i = 0; i < strs.length; i++){ if(map[strs[i]] === 1) arr.push(strs[i]); } max = -1 for(let i = arr.length - 1; i >= 0; i--){ let l = arr[i]; let d = 0; for(let j = 0; j < strs[index].length; j++){ if(strs[index][j] === l[d]){ d++; } } if(d === l.length){ let temp = arr[i]; arr[i] = arr[arr.length - 1]; arr[arr.length - 1] = temp; arr.pop(); } } arr.forEach(el =>{ if(el.length > max) max = el.length; }) return max; }; console.log(longestUncommon(arr));

আউটপুট

কনসোলে আউটপুট:

3

  1. জাভাস্ক্রিপ্টে অ্যারের দৈর্ঘ্য কীভাবে বের করবেন?

  2. জাভাস্ক্রিপ্ট Array length প্রপার্টি

  3. জাভাস্ক্রিপ্ট - অ্যারে অবজেক্টের length প্রোপার্টি

  4. জাভাস্ক্রিপ্টে স্ট্রিংয়ে সর্বোচ্চ দীর্ঘ স্বরবর্ণ (vowel) সাবস্ট্রিং দৈর্ঘ্য