题解 | #公共子串计算#

公共子串计算

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

空间压缩,由于每一个dp值只有在两字符串在当前位置和前一个位置都相同时需要读取前一个位置的dp值并+1,所以可以用一维数组表示,当出现上述情况时dp[j]更新为dp[j-1],否则当前字符相同时更新为1,不相同更新为0,边界值为i或j为0的情况,此时不能求也不用求i-1和j-1

import java.util.Scanner
fun main(args: Array<String>) {fun max(a: Int, b: Int) = Math.max(a, b)
val read = Scanner(System.`in`)
val res1 = read.nextLine()
val res2 = read.nextLine()
val dp = Array(res1.length) { 0 }
var max = 0

for (i in res2.indices) {
    for (j in res1.lastIndex downTo 0) {
        if (res1[j] == res2[i]) {
            dp[j] = if (i > 0 && j > 0 && res1[j - 1] == res2[i - 1]) dp[j - 1] + 1 else 1
            max = max(max, dp[j])
        } else dp[j] = 0
    }
}
println(max)
}
全部评论

相关推荐

沉淀一会:**圣经 1.同学你面试评价不错,概率很大,请耐心等待;2.你的排名比较靠前,不要担心,耐心等待;3.问题不大,正在审批,不要着急签其他公司,等等我们!4.预计9月中下旬,安心过节;5.下周会有结果,请耐心等待下;6.可能国庆节前后,一有结果我马上通知你;7.预计10月中旬,再坚持一下;8.正在走流程,就这两天了;9.同学,结果我也不知道,你如果查到了也告诉我一声;10.同学你出线不明朗,建议签其他公司保底!11.同学你找了哪些公司,我也在找工作。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务