给定两个字符串,请编写代码,输出最长公共子串(Longest Common Substring),是指两个字符串中的最长的公共子串,要求子串一定是连续。
数据范围:输入的两个字符串长度满足
import java.util.*; public class Main { public static void main(String [] args){ Scanner sc=new Scanner(System.in); while(sc.hasNext()){ String[] str=sc.next().split(","); int max=0; for(int i=0;i<str[0].length();i++){ for(int j=i+1;j<=str[0].length();j++){ if(str[1].contains(str[0].substring(i,j))){ max=Math.max(max,str[0].substring(i,j).length()); } } } System.out.println(max); } } }
import java.util.Scanner; /** * @Author: coderjjp * @Date: 2020-05-10 18:29 * @Description: 最大公共子串 * @version: 1.0 */ public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String[] ss = sc.nextLine().split(","); int[][] dp = new int[ss[0].length()+1][ss[1].length()+1]; int ans = 0; for (int i = 1; i <= ss[0].length(); i++) for (int j = 1; j <= ss[1].length(); j++){ if (ss[0].charAt(i-1) == ss[1].charAt(j - 1)){ dp[i][j] = dp[i-1][j-1] + 1; ans = Math.max(ans, dp[i][j]); } } System.out.println(ans); } }