题目 目前只写了一种方法 1.以中心扩展
#include<stdio.h> #include<string.h> /* 分两种情况,一种是对称字符串长度为奇数,另一种为偶数 以某个/某两个字符为中心,对其两边进行比较,下标分别为fore和back 字符串s的fore大于等于零,back不能超过字符串长度 当 s[fore]==s[back],字符串长度len就+2,并继续比较,否则退出循环 设最长字符串为maxlen,每次结束以某字符为中心比较后,maxlen和len进行比较 */ int main(){ char s[1002];//一开始写的是s[1001],测试点6就运行时错误 int fore,back,i,len,maxlen,k; maxlen=1; gets(s); k=strlen(s); for(i=0;i<k;i++){ //当字符串长度为奇数时 fore = i-1; back = i+1; len=1; while(fore>=0&&back<k){ if(s[fore]==s[back]){ len+=2; fore--; back++; } else{ break; } } if(maxlen<len){ maxlen = len; } //当字符串长度为偶数时 fore = i; back = i+1; len=0; while(fore>=0&&back<k){ if(s[fore]==s[back]){ len+=2; fore--; back++; } else{ break; } } if(maxlen<len){ maxlen = len; } } printf("%d",maxlen); return 0; }2.还没写