用C++实现打印最长公共子串程序

在本教程中,我们将讨论打印最长的公共子字符串的程序。

为此,我们将给出两个字符串,比如A和B。我们必须打印两个输入字符串A和B的最长公共子字符串。

例如,如果我们被给予“ HelloWorld”和“ world book”。那么,在这种情况下,最长的公共子字符串将是“ world”。

示例

#include <iostream>

#include <stdlib.h>

#include <string.h>

using namespace std;

void print_lstring(char* X, char* Y, int m, int n){

   int longest[m + 1][n + 1];

   int len = 0;

   int row, col;

   for (int i = 0; i <= m; i++) {

      for (int j = 0; j <= n; j++) {

         if (i == 0 || j == 0)

            longest[i][j] = 0;

         else if (X[i - 1] == Y[j - 1]) {

            longest[i][j] = longest[i - 1][j - 1] + 1;

            if (len < longest[i][j]) {

               len = longest[i][j];

               row = i;

               col = j;

            }

         }

         else

            longest[i][j] = 0;

         }

      }

      if (len == 0) {

         cout << "There exists no common substring";

      return;

   }

   char* final_str = (char*)malloc((len + 1) * sizeof(char));

   while (longest[row][col] != 0) {

      final_str[--len] = X[row - 1];

      row--;

      col--;

   }

   cout << final_str;

}

int main(){

   char X[] = "helloworld";

   char Y[] = "worldbook";

   int m = strlen(X);

   int n = strlen(Y);

   print_lstring(X, Y, m, n);

   return 0;

}

输出结果
world

以上是 用C++实现打印最长公共子串程序 的全部内容, 来源链接: utcz.com/z/337960.html

回到顶部