Javascript
 Computer >> コンピューター >  >> プログラミング >> Javascript

JavaScriptで2つの文字列間で最も長く共通の連続する部分文字列を見つける


2つの文字列を受け取る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

  1. JavaScriptで最長の連続結合を検索する

    問題 最初で唯一の引数として、数値のペアarrの配列を受け取るJavaScript関数を作成する必要があります。すべてのペアで、最初の数字は常に2番目の数字よりも小さくなります。 ここで、b

  2. Pythonで3つ以上の文字列から最長の共通部分文字列を見つける方法は?

    最長共通部分文字列アルゴリズムの一般的な動的計画法の実装は、O(nm)時間で実行されます。以下は、最も長い一般的な部分文字列アルゴリズムの実装です。 例 def longest_common_substring(s1, s2):    m = [[0] * (1 + len(s2)) for i in xrange(1 + len(s1))]    longest, x_longest = 0, 0    for x in xrange(1, 1 + len(s1)):        for y