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