题解 | #最长公共子串#

最长公共子串

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-29 11:21
门头沟学院 Java
总包48.5w,意想不到的价格
无情咸鱼王的秋招日记之薛定谔的Offer:R
点赞 评论 收藏
分享
10-30 10:16
南京大学 Java
永远的鹅孝子:给南大✌️跪了
点赞 评论 收藏
分享
投递大华股份等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务