题解 | 最长公共子串

最长公共子串

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

object Solution {
    /**
    * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
    *
    * longest common substring
        * @param str1 string字符串 the string
        * @param str2 string字符串 the string
        * @return string字符串
    */
    fun LCS(str1: String,str2: String): String  {
        // write code here
         val m = str1.length
         val n = str2.length
         var dp = Array(m+1){IntArray(n+1)}
         var maxLength = 0
         var endIndex = 0
        for(i in 1..m){
            for(j in 1..n){
                if(str1[i-1] == str2[j-1]){
                    dp[i][j]=dp[i-1][j-1]+1
                    if(maxLength<dp[i][j]){
                        maxLength=dp[i][j]
                        endIndex = i
                    }
                }
                else{
                    dp[i][j]=0
                }
            }
        }
        return if(maxLength==0) "" else str1.substring(endIndex-maxLength,endIndex)}
    }


全部评论

相关推荐

02-02 19:07
已编辑
河南师范大学 算法工程师
用微笑面对困难:一般5年老工都不太敢写“精通python”至少要达到noi的级别 兄弟你要是真精通大厂秒进的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务