1、
* 题目标题:
* 计算两个字符串的最大公共字串的长度,字符不区分大小写。
* 输入描述:输入两个字符串,分两行输入。
* 输出描述:输出一个整数。
* 示例:
* 输入:
* asdfas
* werasdfaswer
* 输出:6
在计算机科学中,最长公共子串问题是寻找两个或多个已知字符串最长的子串。此问题与最长公共子序列问题的区别在于子序列不必是连续的,而子串却必须是。
例如:
str1="123ABCD4567" str2 = "ABE12345D6"
最长公共子串是:123
最长公共子序列是:123456
最长公共子串的动态规划解法如下:
dp[i][j] -- 表示以str1[i]和str2[j]为结尾的最长公共子串
当str1[i] == str2[j]时,dp[i][j] = dp[i-1][j-1] + 1;
否则,dp[i][j] = 0;
最优解为max(dp[i][j]),其中0<=i<len1, 0<=j<len2;
JAVA代码实现:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in