শব্দ চেইন
ধরা যাক word1 হল word2-এর পূর্বসূরি যদি এবং শুধুমাত্র যদি আমরা word1-এর যেকোনো জায়গায় ঠিক একটি অক্ষর যোগ করে এটাকে word2-এর সমান করতে পারি। উদাহরণস্বরূপ, "abc" হল "abac" এর পূর্বসূরী।
একটি শব্দ শৃঙ্খল হল শব্দের একটি ক্রম [word_1, word_2, ..., word_k] সঙ্গে k>=1, যেখানে word_1 হল word_2 এর পূর্বসূরি, word_2 হল word_3 এর পূর্বসূরি, ইত্যাদি।
সমস্যা
আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা প্রথম এবং একমাত্র আর্গুমেন্ট হিসাবে স্ট্রিং, arr-এর একটি অ্যারে নেয়৷
অ্যারে অ্যারের প্রতিটি স্ট্রিং ইংরেজি ছোট হাতের অক্ষর নিয়ে গঠিত। আমাদের ফাংশনটি প্রদত্ত অ্যারে, অ্যার থেকে নির্বাচিত শব্দগুলির সাথে একটি শব্দ চেইনের দীর্ঘতম সম্ভাব্য দৈর্ঘ্য ফিরিয়ে দেবে৷
উদাহরণস্বরূপ, যদি ফাংশনে ইনপুট হয় −
const arr = ["a","b","ba","bca","bda","bdca"];
তারপর আউটপুট −
হওয়া উচিতconst output = 4;
আউটপুট ব্যাখ্যা:
দীর্ঘতম শব্দ শৃঙ্খলগুলির মধ্যে একটি হল "a","ba","bda","bdca।"
উদাহরণ
এর জন্য কোড হবে −
const arr = ["a","b","ba","bca","bda","bdca"]; const longestStrChain = (arr) => { arr.sort((a, b) => a.length - b.length); const isPredecessor = (word1 = '', word2 = '') => { if(Math.abs(word1.length - word2.length) !== 1){ return false; }; for(let i = 0; i < word2.length; i++){ const word = word2.slice(0, i) + word2.slice(i + 1); if(word === word1){ return true; }; }; return false; }; const array = []; let max = 0; for(let i = arr.length - 1; i >= 0; i--){ array[i] = 1; for(let j = arr.length - 1; j > i; j--){ if(isPredecessor(arr[i], arr[j])){ array[i] = Math.max( array[i], 1 + array[j], ); }; }; max = Math.max(max, array[i]); }; return max; }; console.log(longestStrChain(arr));
আউটপুট
এবং কনসোলে আউটপুট হবে −
4