输入一个字符串,输出该字符串中对称的子字符串的最大长度。比如输入字符串“google”,由于该字符串里最长的对称子字符串是“goog”,因此输出4
//对称子字符串的最大长度
bool Symmetric_String(char *s) //判断字符串是否对称
{
int d=strlen(s);
char *temp=(char*)malloc(sizeof(char)*(d+1));
temp[d]='\0';
for (int i=0;i<d;i++)
{
temp[i]=s[d-1-i];
}
for (i=0;i<d;i++)
{
if (temp[i]!=s[i])
{
return false;
}
}
free(temp);
return true;
}
int Symmetric_String_Length(char *s)
{
int d=strlen(s);
char temp[50];
memset(temp,'\0',sizeof(temp));
int temp1=-1;//存储临时数据
for (int i=d;i>=0;i--) //遍历字符串的每个子字符串
{
memset(temp,'\0',sizeof(temp));
for (int j=0;j<=i;j++)
{
for (int k=j,t=0;k<i;k++,t++)
{
temp[t]=s[k]; //所得到的子字符串赋给缓冲区
}
if(Symmetric_String(temp)) //判断子字符串是否为对称的字符串
{
if ((i-j)>temp1) //如果大于所得到的长度则,将上一个长度替换
{
temp1=((i-j));
}
}
memset(temp,'\0',sizeof(temp));//把缓冲区清空,进入下一个循环
}
}
return temp1;
}