21xrx.com
2024-12-22 21:02:58 Sunday
登录
文章检索 我的文章 写文章
【标题】Java实现最长连续子串的算法方法
2023-06-16 12:02:49 深夜i     --     --
Java实现 最长连续子串 动态规划算法

【文章】

最长连续子串(Longest Common Substring)是一道经典的问题,常出现在面试、竞赛等场合中。本文将为大家介绍Java实现最长连续子串算法的方法。

最长连续子串的定义是:给定两个字符串S和T,求S和T的最长公共子串的长度。例如S="abcdfg",T="cxyabcf",S和T的最长公共子串为"abc",长度为3。

实现最长连续子串的算法有多种方法,其中较为简单的一种是动态规划。该算法需要用到一个二维数组dp[i][j],表示以S的第i个字符和T的第j个字符结尾的最长公共子串的长度。

具体的实现过程如下:

1. 初始化dp数组,令dp[i][j]=0;

2. 若S的第i个字符等于T的第j个字符,则dp[i][j]=dp[i-1][j-1]+1;否则dp[i][j]=0;

3. 在比较过程中记录最长公共子串的长度maxLen;

4. 返回maxLen即可。

下面是Java代码实现:

public static int longestCommonSubstring(String s, String t) {

  int lenS = s.length(), lenT = t.length(), maxLen = 0;

  int[][] dp = new int[lenS + 1][lenT + 1];

  for (int i = 1; i <= lenS; i++) {

    for (int j = 1; j <= lenT; j++) {

      if (s.charAt(i - 1) == t.charAt(j - 1)) {

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

        if (dp[i][j] > maxLen) {

          maxLen = dp[i][j];

        }

      }

    }

  }

  return maxLen;

}

以上就是Java实现最长连续子串算法的方法。通过简单的动态规划算法,我们可以快速求解任意两个字符串的最长公共子串。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复