string find3(string a,string b)
{
if(a.size()>b.size())
swap(a,b); //确保前面的一个字符串短;
string str_m;
for(int i=0; i<a.size(); i++)
{
for(int j=i; j<a.size(); j++)
{
string temp=a.substr(i,j-i+1);
if(int(b.find(temp))<0)
break;
else if(str_m.size()<temp.size())
str_m=temp;
}
}
return str_m;
}
string findlargestsubstr2(string str1,string str2)
{
if(str1.size()>str2.size())
swap(str1,str2);
string str_res;
for(int i=0 ; i<str1.size() ; i++)
{
for(int j=i ; j<str1.size() ; j++)
{
string str_tmp = str1.substr(i,j-i+1);
int pos = str2.find(str_tmp) ;
if(pos != str2.npos)
{
if(str_res.size()<str_tmp.size())
{
str_res = str_tmp;
}
}
}
}
return str_res;
}
//转
int findLongest(string A, int n, string B, int m) {
vector<vector<int> > dp(n+1,vector<int>(m+1,0));
int Max = 0;
for(int i=0;i<=n;i++)
if(A[i]==B[0])
dp[i][0] = 1;
for(int j=1;j<=m;j++)
if(B[j]==A[0])
dp[0][j]=1;
for(int i=1;i<n;i++)
for(int j=1;j<m;j++)
if(A[i]==B[j])
{
dp[i][j] = dp[i-1][j-1] + 1;
Max = max(Max, dp[i][j]);
}
return Max;
}