题解 | #最长公共子串#

最长公共子串

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

class Solution {
public:
    /**
     * longest common substring
     * @param str1 string字符串 the string
     * @param str2 string字符串 the string
     * @return string字符串
     */
//思想很简单,就是循环对比
    string LCS(string str1, string str2) {
        // write code here
        int str1len=str1.size();
        int str2len=str2.size();
        int max=0;
        string temp;
        for(int i=0;i<str1len;i++)
        { 
            for(int j=0;j<str2len;j++)
            {
                if(str1[i]==str2[j])
                {
                    int sum=0;string work;
                    while(str1[i]==str2[j]&&i<str1len&&j<str2len)
                    {
                        work+=str1[i];
                        sum++;
                        i++;
                        j++;
                    }
                    if(sum>max)//更新最长的子串
                    {
                        max=sum;
                        temp=work;
                    }
                    i-=sum;//i回溯
                    j-=sum;//j回溯
                }
            }
        }
        return temp;//返回最长子串
    }
};
全部评论

相关推荐

11-01 08:48
门头沟学院 C++
伤心的候选人在吵架:佬你不要的,能不能拿户口本证明过户给我。。球球了
点赞 评论 收藏
分享
4 1 评论
分享
牛客网
牛客企业服务