Longest common substring
1. 使用二维向量存当前长度。
string lcs(const string &s, const string &t)
{
const int slen = s.length();
const int tlen = t.length();
vector<vector<int>> arr(slen, vector<int>(tlen, 0));
string lcs;
int maxlen = 0;
for(int i=0; i<slen; i++)
{
for(int j=0; j<tlen; j++)
{
if(s[i] == t[j])
{
if(0 == i || 0 == j)
arr[i][j] = 1;
else
{
arr[i][j] = arr[i-1][j-1] + 1;
}
if(maxlen < arr[i][j])
{
maxlen = arr[i][j];
lcs.assign(s.begin() + (i+1-maxlen), s.begin()+i+1);
}
}
}
}
return lcs;
}
浙公网安备 33010602011771号