题解 | #最长公共子串#

最长公共子串

http://www.nowcoder.com/practice/f33f5adc55f444baa0e0ca87ad8a6aac



public class Solution {
    /**
     * longest common substring
     * @param str1 string字符串 the string
     * @param str2 string字符串 the string
     * @return string字符串
     */
    public String LCS (String str1, String str2) {
        // write code here
        if(str1 == null || str2 == null){
            return null;
        }
        int m = str1.length();
        int n = str2.length();
        //dp[i][j] 代表 0...i-1 到 0....j-1的公共子串长度
        int[][] dp = new int[m+1][n+1];
        //max 最长公共子串长度
        int max = 0,end = 0;
       
        for(int i = 0 ;i< m;i++){
            for(int j = 0;j< n;j++){
                if(str1.charAt(i) == str2.charAt(j)){
                    dp[i+1][j+1] = dp[i][j]+1;
                    if(max < dp[i+1][j+1]){
                        max = dp[i+1][j+1];
                        end = i+1;
                    }
                }
            }
        }
         return max ==0 ? "-1":str1.substring(end - max ,end);
    }
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
11-26 15:46
已编辑
字节国际 电商后端 24k-35k
点赞 评论 收藏
分享
11-07 13:31
怀化学院 Java
勇敢牛牛不怕难:又疯一个
点赞 评论 收藏
分享
我是小红是我:学校换成中南
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务