对称字符串的最大长度(字符串)。
题目:输入一个字符串,输出该字符串中对称的子字符串的最大长度。
比如输入字符串“google”,由于该字符串里最长的对称子字符串是“goog”,因此输出4。
思路:将题目转化为,求原串和反转串的最长连续子串的长度
int LongCommonSubstr(string s1, string s2)
{
int m = s1.length();
int n = s2.length();
int maxlen = 0;
vector<vector<int> > dp(m+1,vector<int>(n+1,0));
for (int i=0;i<=m;++i)
{
for (int j =0;j<=n;++j)
{
if(i==0 || j==0)
dp[i][j] = 0;
else
{
if(s1[i-1]==s2[j-1])
dp[i][j] = dp[i-1][j-1] + 1;
else
dp[i][j] = 0;
}
if(dp[i][j] > maxlen )
maxlen = dp[i][j];
}
}
return maxlen;
}
int MaxMirrorLenString(string input)
{
string origin = input;
reverse(input.begin(),input.end());
return LongCommonSubstr(origin,input);
}