寻找最长对称子串
#include<stdio.h>
int main()
{
char arr[1000]; //外部输入字符串存放处
int i;
int c;
for(i=0;i<1000&&((c=getchar())!='\n');){ //当字符数小于1000且没输出'\n' 时 逐个输入字符,
arr[i] = c ; //并将字符赋给数组arr
i++;
}
int sign = 1; //检验位,判断是否完全对称
int longest = 0 ; //最终的对称字符串的长度
int length; //输入字符串的长度,等于 i ;
length = i;
int j,k;
int b;
for(j=0;j<length;j++){ //双层循环,外层为从前向后,内层为从后向前
for(k=length-1;k>0;k--){
if(arr[j]==arr[k]){ //当第一次发现有头尾对称时,
for(b=j+1;b<=(k-j)/2;b++){ // 我们开始判断一头一尾之间是否也是对称的
if(arr[b]!=arr[j+k-b]){ //如果存在不对称的,那自然为假,检验位 sign = 0
sign = 0;
}
}
if(sign==1&&((k-j)>longest)){ //经过一次循环后,如果sign = 1; 则存在对称子串
longest = k - j ; //如果长度大于longest的话(我们要得到最长的)把对称子窜的全长交给longest
}
}
}
}
if(longest>0){
printf("%d",longest+1); //输出长度
}
return 0;
}