Computer >> Máy Tính >  >> Lập trình >> Javascript

Tìm chuỗi con chung liên tiếp dài nhất giữa hai chuỗi trong JavaScript

Chúng tôi được yêu cầu viết một hàm JavaScript có hai chuỗi. Hãy gọi chúng là str1 vàstr2. Sau đó, hàm sẽ tìm ra chuỗi dài nhất liên tiếp chung cho cả chuỗi đầu vào và trả về chuỗi chung đó.

Ví dụ -

Nếu các chuỗi đầu vào là -

const str1 = 'ABABC';
const str2 = 'BABCA';

Sau đó, chuỗi đầu ra phải là -

const output = 'BABC';

Ví dụ

Sau đây là mã -

const str1 = 'ABABC';
const str2 = 'BABCA';
const findCommon = (str1 = '', str2 = '') => {
   const s1 = [...str1];
   const s2 = [...str2];
   const arr = Array(s2.length + 1).fill(null).map(() => {
      return Array(s1.length + 1).fill(null);
   });
   for (let j = 0; j <= s1.length; j += 1) {
      arr[0][j] = 0;
   }
   for (let i = 0; i <= s2.length; i += 1) {
      arr[i][0] = 0;
   }
   let len = 0;
   let col = 0;
   let row = 0;
   for (let i = 1; i <= s2.length; i += 1) {
      for (let j = 1; j <= s1.length; j += 1) {
         if (s1[j - 1] === s2[i - 1]) {
            arr[i][j] = arr[i - 1][j - 1] + 1;
         }
         else {
            arr[i][j] = 0;
         }
         if (arr[i][j] > len) {
            len = arr[i][j];
            col = j;
            row = i;
         }
      }
   }
   if (len === 0) {
      return '';
   }
   let res = '';
   while (arr[row][col] > 0) {
      res = s1[col - 1] + res;
      row -= 1;
      col -= 1;
   }
   return res;
};
console.log(findCommon(str1, str2));

Đầu ra

Sau đây là kết quả trên bảng điều khiển -

BABC