题解 | 最长公共子串

object Solution {
    /**
    * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
    *
    * longest common substring
        * @param str1 string字符串 the string
        * @param str2 string字符串 the string
        * @return string字符串
    */
    fun LCS(s1: String,s2: String): String  {
        val builder = StringBuilder()
        val dp = Array<IntArray>(s1.length + 1) {IntArray(s2.length + 1)}
        var maxLen = 0
        var maxi = 0
        var maxj = 0
        for (i in 1..s1.length) {
            for (j in 1..s2.length) {
                dp[i][j] = if (s1[i-1] == s2[j-1]) dp[i-1][j-1] + 1 else 0
                if (dp[i][j] > maxLen) {
                    maxLen = dp[i][j]
                    maxi = i
                    maxj = j
                }
            }
        }
        if (maxLen <= 0) return "-1"
        for (x in 0..maxLen - 1) {
            builder.append(s1[maxi - x - 1])
        }
        return builder.reverse().toString()
    }
}



全部评论

相关推荐

我的第一次面试🥺,和专业完全不搭噶但是不想从事专业的实习,结果自己还没学会就去面试了🤣1.自我介绍2.hr介绍公司概况3.问玩没玩过宾果消消乐回答今天刚下载接触不深4.平常玩什么游戏多回答市面上热门的休闲游戏,开心消消乐,沙威马传奇等5.问测试的种类有?新手有点手忙脚乱,我说有黑盒白盒灰盒测试,然后白盒有单元测试,黑盒主要是功能测试和自动化测试,6.压力测试和性能测试了解吗?回答正在学习(但是没学过)7.可以说一下学到哪里了吗?(挖坑给自己跳了)说了压力测试是测试系统的压力(其实根本不会不知道)8.测试用例的编写方法?判定表法,正交表法,因果图法,边界值法(剩下我忘了)9.说一下判定表法是怎么执行的?(依旧是不太会)有条件桩和动作桩,动作桩是判断用户可能的动作,根据动作桩在相应条件,打勾?(我不太熟只做过笔试题,还是现学的)10.消消乐新增一个颜色棋子,请设计测试用例(我是哑巴)磕磕巴巴说不出来11.消消乐新增一个能够消除同种颜色的棋子,请设计测试用例(我是哑巴)说了一堆磕磕巴巴的没记住12.还有什么特别的测试点吗?想了几个,但是好像没什么用,不太特别13.逻辑题:两根不均匀绳子,都是60分钟烧完,怎么能计时15分钟?我没想出来,嗯嗯了半天,连长度除以时间算速度都想到了,最后hr给了个提示,可以两头同时烧,我顿悟,迅速说出了答案14.还有什么要问的?我问工作中不会的可以问前辈吗,回答是可以其他的忘记了,11上午11点,面了40分钟,下午收到面试未通过的信息。这样一串看起来非常糟糕的面试啊,不通过也是理所当然,不过我实在想去公司学习,各位前辈有什么建议吗?
查看13道真题和解析
点赞 评论 收藏
分享
01-02 10:24
已编辑
门头沟学院 Java
字节 测开 n×15 base
点赞 评论 收藏
分享
查看9道真题和解析
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务