题解 | 最长公共子串
最长公共子串
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)}
}
