最长公共子串

【问题】
给出两个字符串(可能包含空格),找出其中最长的公共连续子串,输出其长度。

输入描述:

输入为两行字符串(可能包含空格),长度均小于等于50.

输出描述:

输出为一个整数,表示最长公共连续子串的长度。

示例1

输入

abcde
abgde

输出

2

① 

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str1 = sc.nextLine();
        String str2 = sc.nextLine();
        char[] schar1 = str1.toCharArray();
        char[] schar2 = str2.toCharArray();
        int len1 = schar1.length;
        int len2 = schar2.length;
        int[][] dp = new int[len1][len2];
        int maxLen = 0;
        for (int i = 0;i < len1;i ++){
            for (int j = 0;j < len2;j ++){
                if (schar1[i] == schar2[j]){
                    if (i > 0 && j > 0){
                        dp[i][j] = dp[i - 1][j - 1] + 1;
                    }else {
                        dp[i][j] = 1;
                    }
                }
                if (maxLen < dp[i][j]){
                    maxLen = dp[i][j];
                }
            }
        }
        System.out.println(maxLen);
    }
}

 

猜你喜欢

转载自my.oschina.net/liyurong/blog/1791598
今日推荐