题解-通俗易懂 | Java-二维DP-#最长公共子序列-II#

最长公共子序列-II

http://www.nowcoder.com/practice/6d29638c85bb4ffd80c020fe244baf11

二维DP

import java.util.*;


public class Solution {
    /**
     * longest common subsequence
     * @param s1 string字符串 the string
     * @param s2 string字符串 the string
     * @return string字符串
     */
    public String LCS (String s1, String s2) {
        // write code here
        char[] cc1 = s1.toCharArray();
        char[] cc2 = s2.toCharArray();
        int n1 = cc1.length;
        int n2 = cc2.length;
        String dps[][] = new String[n1 + 1][n2 + 1];
        Arrays.fill(dps[0], "");
        for (int i = 0; i <= n1; ++i) {
            dps[i][0] = "";
        }
        for (int i = 1; i <= n1; ++i) {
            for (int j = 1; j <= n2; ++j) {
                if (cc1[i - 1] == cc2[j - 1]) {
                    dps[i][j] = dps[i - 1][j - 1] + cc1[i - 1];
                } else if (dps[i - 1][j].length() > dps[i][j - 1].length()) {
                    dps[i][j] = dps[i - 1][j];
                } else {
                    dps[i][j] = dps[i][j - 1];
                }
            }
        }
        return dps[n1][n2].length() == 0 ? "-1" : dps[n1][n2];
    }
}
全部评论

相关推荐

05-12 11:09
已编辑
门头沟学院 后端
SmileDog12138:没必要放这么多专业技能的描述。这些应该是默认已会的,写这么多行感觉在凑内容。项目这块感觉再包装包装吧,换个名字,虽然大家的项目基本都是网上套壳的,但是你这也太明显了。放一个业务项目,再放一个技术项目。技术项目,例如中间件的一些扩展和尝试。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务