题解 | #公共子串计算#动态规划

公共子串计算

http://www.nowcoder.com/practice/98dc82c094e043ccb7e0570e5342dd1b

import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        String s=sc.nextLine();
        String t=sc.nextLine();
        int m=s.length();
        int n=t.length();
        int[][] dp=new int[m+1][n+1];
        dp[0][0]=0;
        int maxLen=0;
        for(int i=0;i<m;i++){
            for(int j=0;j<n;j++){
              //两个字串结尾的字符相同时,公共字串长度+1
                if(s.charAt(i)==t.charAt(j)){
                    dp[i+1][j+1]=dp[i][j]+1;
                }
              //两个字串结尾的字符不相同时,公共字串长度为0
                else{
                    dp[i+1][j+1]=0;
                }
                maxLen=Math.max(maxLen,dp[i+1][j+1]);
            }
        }
        System.out.println(maxLen);
    }
}
全部评论

相关推荐

评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客企业服务