码迷,mamicode.com
首页 > 其他好文 > 详细

alg-最长公共子串

时间:2019-07-23 20:10:12      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:mon   res   size   str   sub   class   cto   子串   stc   

class Solution {
public:
    const std::vector<std::string> LongestCommonSubstring(const std::string& s1, const std::string& s2) {
        if (s1.empty() || s2.empty()) {
            return std::vector<std::string>();
        }

        //dp
        std::vector<std::vector<int>> dp(s1.size()+1,std::vector<int>(s2.size()+1,0));
        int max_len=-1;
        for(int i=1;i<s1.size()+1;i++) {
            for(int j=1;j<s2.size()+1;j++) {
                dp[i][j]=(s1[i-1]==s2[j-1])?dp[i-1][j-1]+1:0;
                if(dp[i][j]>max_len) {
                    max_len=dp[i][j];
                }
            }
        }

        //print result
        std::vector<std::string> res;
        for(int i=1;i<s1.size()+1;i++) {
            for(int j=1;j<s2.size()+1;j++) {
                if(dp[i][j]==max_len) {
                    res.push_back(s1.substr(i-max_len,max_len));
                }
            }
        }
        
        return res;
    }  
};

alg-最长公共子串

标签:mon   res   size   str   sub   class   cto   子串   stc   

原文地址:https://www.cnblogs.com/smallredness/p/11234069.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!