题解 | #最长公共子串#

最长公共子串

https://www.nowcoder.com/practice/f33f5adc55f444baa0e0ca87ad8a6aac

动规:只要将当前的子序列最大长度记录在dp数组中即可,若是两者不相等,那么此时dp数组对应的值为零
class Solution {
public:
    /**
     * longest common subsequence
     * @param s1 string字符串 the string
     * @param s2 string字符串 the string
     * @return string字符串
     */
    string LCS(string s1, string s2) {
        // write code here
        //最长的公共子序列,初始化序列
        vector<vector<int> > dp(s1.size() + 1, vector<int>(s2.size() + 1,0));
        int res = 0;
        int pos = 0;
        for(int i = 1; i <= s1.size() ; i++)
        {
            for(int j = 1; j <= s2.size(); j++)
            {
                if(s1[i - 1] == s2[j - 1])
                {
                    //怎么会呢,就差在后面的一个+1上面,只要确定斜对角是相等的即可
                    dp[i][j] = dp[i - 1][j - 1] + 1;
                    //这里面就需要对维护的最大值进行更新,以保障得到的用户一直处于最后的位子
                    if(res <= dp[i][j])
                    {
                        res = dp[i][j];
                        pos = i;//代表最后终止的地方
                    }
                }
                //不相等的话直接置零即可
                else{
                    dp[i][j] = 0;
                }
            }
        }
        
        string r;
        //截取当前子序列的值,然后处理即可
        r.assign(s1.begin() + pos - res , s1.begin() + pos);
        std::cout << r << " res = " << res << " pos = " << pos << std::endl;
        if(r.size() == 0) return "-1";
        return r;
    }
};


全部评论

相关推荐

点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
# 面试被问到不会的问题,你怎么应对? #
128次浏览 2人参与
# 参加完秋招的机械人,还参加春招吗? #
119770次浏览 755人参与
# 开放七大实习专项,百度暑期实习值得冲吗 #
17814次浏览 266人参与
# 你觉得大几开始实习最合适? #
117次浏览 2人参与
# 拼多多工作体验 #
52267次浏览 332人参与
# 通信硬件知识分享 #
48068次浏览 537人参与
# 米连集团26产品管培生项目 #
14147次浏览 288人参与
# 找AI工作可以去哪些公司? #
15071次浏览 629人参与
# 说说你知道的学历厂 #
390882次浏览 1379人参与
# 从事AI岗需要掌握哪些技术栈? #
13315次浏览 715人参与
# 你做过最难的笔试是哪家公司 #
44545次浏览 632人参与
# 金三银四,你的春招进行到哪个阶段了? #
24129次浏览 295人参与
# 想给25届机械人的秋招建议 #
47665次浏览 251人参与
# AI面会问哪些问题? #
34012次浏览 949人参与
# 中国电信笔试 #
32968次浏览 303人参与
# 我心目中的理想工作是这样的 #
100808次浏览 907人参与
# 携程笔试 #
139500次浏览 839人参与
# 这些公司卡简历很严格 #
94900次浏览 415人参与
# 拼多多集团-PDD笔试 #
37427次浏览 358人参与
# 一人说一个提前实习的好处 #
118412次浏览 711人参与
# 投递几十家公司,到现在0offer,大家都一样吗 #
342650次浏览 2190人参与
# 实习越久越好,还是多多益善? #
91474次浏览 359人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务