আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা দুটি লিটারেল অ্যারে নেবে, ডাকব সেগুলো arr1 এবং arr2।
ফাংশনটি অ্যারেগুলোতে সবচেয়ে লম্বা কমন স্ট্রিক (লিটারেলের সিকোয়েন্স) খুঁজে বের করবে। ফাংশনটি সেসব লিটারেল ধারণকারী একটি অ্যারে রিটার্ন করবে।
উদাহরণস্বরূপ:
যদি ইনপুট অ্যারেগুলো হয়:
const arr1 = ['a', 'b', 'c', 'd', 'e']; const arr2 = ['k', 'j', 'b', 'c', 'd', 'w'];
তাহলে আউটপুট অ্যারে হবে:
const output = ['b', 'c', 'd'];
উদাহরণ
নিচে কোডটি দেওয়া হলো:
const arr1 = ['a', 'b', 'c', 'd', 'e']; const arr2 = ['k', 'j', 'b', 'c', 'd', 'w']; const longestCommonSubsequence = (arr1 = [], arr2 = []) => { let str1 = arr1.join(''); let str2 = arr2.join(''); const arr = Array(str2.length + 1).fill(null).map(() => Array(str1.length + 1).fill(null)); for (let j = 0; j <= str1.length; j += 1) { arr[0][j] = 0; } for (let i = 0; i <= str2.length; i += 1) { arr[i][0] = 0; } for (let i = 1; i <= str2.length; i += 1) { for (let j = 1; j <= str1.length; j += 1) { if (str1[j - 1] === str2[i - 1]) { arr[i][j] = arr[i - 1][j - 1] + 1; } else { arr[i][j] = Math.max( arr[i - 1][j], arr[i][j - 1], ); } } } if (!arr[str2.length][str1.length]) { return ['']; } const res = []; let j = str1.length; let i = str2.length; while (j > 0 || i > 0) { if (str1[j - 1] === str2[i - 1]) { res.unshift(str1[j - 1]); j -= 1; i -= 1; } else if (arr[i][j] === arr[i][j - 1]) { j -= 1; } else { i -= 1; } } return res; }; console.log(longestCommonSubsequence(arr1, arr2));আউটপুট
কনসোলে নিচের আউটপুট পাওয়া যাবে:
['b', 'c', 'd']