题目描述
给定两个字符串str1和str2,输出两个字符串的最长公共子串,如果最长公共子串为空,输出-1
题解:
lcs模板
代码:
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
if(str1.size()==0||str2.size()==0) return "-1";
vector<int>dp(str2.size()+1);
int tmp=0,anslen=0,end=0;
for(int i=1;i<=str1.size();++i){
int last=0;
for(int j=1;j<=str2.size();++j){
tmp=dp[j];
if(str1[i-1]==str2[j-1])
dp[j]=last+1;
else
dp[j]=0;
last=tmp;
if(anslen<dp[j]){
anslen=dp[j];
end=j;
}
}
}
string ans=str2.substr(end-anslen, anslen);
return ans.size()==0?"-1":ans;
}
};