เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่ใช้อาร์เรย์ของตัวอักษรสองตัว เรียกว่า 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']