题解 | #最长公共子序列(二)#

最长公共子序列(二)

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

class Solution {
  public:
    string LCS(string s1, string s2) {
        int n = s1.length(), m = s2.length();

        if (s1.empty() || s2.empty()) return "-1";

        vector<vector<int>> dp(n + 1, vector<int>(m + 1));
        string res;

        for(int i = 1; i <= n; ++ i){
            for(int j = 1; j <= m; ++ j){
                dp[i][j] = (s1[i - 1] == s2[j - 1]) ? 1 + dp[i- 1][j - 1] : max(dp[i][j - 1], dp[i - 1][j]);
            }
        }

        for(int i = n, j = m; dp[i][j] > 0; ){
            if(s1[i - 1] == s2[j - 1]){
                res += s1[i - 1];
                i --;
                j --;
            }else if(dp[i - 1][j] >= dp[i][j - 1]){
                i --;
            }else{
                j --;
            }
        }

        reverse(res.begin(), res.end());
        return res != "" ? res : "-1";

    }
};

全部评论

相关推荐

给我发了笔试链接,想着等晚上回去做,结果还没做流程就终止了
伟大的小黄鸭在学习:我猜就是笔试几乎没用,就是用来给用人部门拖时间复筛简历的,可能用人部门筛到你简历觉得不合适就提前挂了
投递小鹏汽车等公司10个岗位
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-15 22:48
牛马人的牛马人生:建议就是把北邮几个字放大就行了。北邮本硕按理来说完全不用担心啊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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