题解 | #最长公共子序列-II#

最长公共子序列-II

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

class Solution {
private:
    string build(string& str, int i, int j, vector<vector<int>>& directions){
        if(i < 1 || j < 1){
            return "";
        }
        string ans;
        if(directions[i][j] == 1){
            // 来自左上方
            ans += build(str, i - 1, j - 1, directions);
            ans += str[i-1];
        }else if(directions[i][j] == 2){
            // 来自左侧
            ans = build(str, i, j - 1, directions);
        }else if(directions[i][j] == 3){
            // 来自右侧
            ans = build(str, i-1, j, directions);
        }
        return ans;
    }
public:
    string LCS(string s1, string s2) {
        // write code here
        int size1 = s1.size(), size2 = s2.size(), len = 0;
        vector<vector<int>> dp(size1+1, vector<int>(size2+1, 0)), directions(size1+1, vector<int>(size2+1, 0));
        for(int i = 1; i < size1 + 1; ++i){
            char e1 = s1[i-1];
            for(int j = 1; j < size2 + 1; ++j){
                char e2 = s2[j-1];
                // 左上方
                if(e1 == e2){
                    dp[i][j] = dp[i-1][j-1] + 1;
                    directions[i][j] = 1;
                }else if(dp[i-1][j] < dp[i][j-1]){
                    dp[i][j] = dp[i][j-1];
                    // 左侧
                    directions[i][j] = 2;
                }else{
                    dp[i][j] = dp[i-1][j];
                    // 上方
                    directions[i][j] = 3;
                }
                len = max(len, dp[i][j]);
            }
        }
        if(!len){
            return "-1";
        }
        // 构造最长公共子序列
        return build(s1, size1, size2, directions);
    }
};
全部评论

相关推荐

白火同学:先说结论,对于一份实习简历来说,整体还是挺不错的,技术深度和广度都到位,找到一份中小厂的实习没啥问题。 再说说能优化的点吧。 1、量化结果,项目中很多工作量化一下结果给面试官的感受会更直观一些,也能体现你对应用该项技术的理解(在众多技术为什么要用它,运行性能或者说开发效率往往是一大考虑指标;而不是说大家做这种功能都用它,所以我用它)。 2、突出亮点,项目中可以从“工作职责”择一些“个人亮点”另写一块,优先去写开发过程中遇到的xx问题,使用xx技术达到xx效果,针对性去写一些疑杂难的功能,能带出你个人思考和解决的过程。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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