题目
动态规划想不出来,想了个接近人思考过程的算法,没想到效果还挺好,主要是考虑到如果当前最长子串的长度已经很长了,就没必要遍历最后短暂的字符串了。

class Solution {
public:
    /**
     * longest common substring
     * @param str1 string字符串 the string
     * @param str2 string字符串 the string
     * @return string字符串
     */
    string LCS(string str1, string str2) {
        string res="";
        int reslen=0;
        for(int i=0;i<str1.size()-reslen;i++){
            for(int j=0;j<str2.size()-reslen;j++){
                if(str1[i]==str2[j]){
                    string tmps = string(1, str1[i]);
                    for(int p = i+1,q=j+1;p<str1.size() && q<str2.size() && str1[p]==str2[q]; p++,q++){
                        tmps = tmps+str1[p];
                    }
                    if(tmps.size()>reslen){
                        res = tmps;
                        reslen = res.size();
                    }
                }
            }
        }
        return res;
    }
};