Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript에서 두 문자열 사이에서 가장 긴 공통 연속 하위 문자열 찾기

<시간/>

두 개의 문자열을 받는 JavaScript 함수를 작성해야 합니다. str1과 str2라고 합시다. 그런 다음 함수는 두 입력 문자열에 공통인 가장 긴 연속 문자열을 찾아 해당 공통 문자열을 반환해야 합니다.

예:

입력 문자열이 -

인 경우
const str1 = 'ABABC';
const str2 = 'BABCA';

그런 다음 출력 문자열은 -

여야 합니다.
const output = 'BABC';

예시

다음은 코드입니다 -

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));

출력

다음은 콘솔의 출력입니다 -

BABC