题目:最长对称子串
思路:枚举每个位置,从每个位置的左右同时开始进行查找相等累计个数,分奇数和偶数俩种情况,筛选最大值即可。
代码:
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int main()
{
char str[1005];
while(gets(str)!=NULL){
int len = strlen(str),l,r,lcnt,rcnt,ans = 0;
for(int i=0;i<len;i++){
l = i-1;r = i+1;lcnt = 1;//奇数情况
while(str[l] == str[r] && l>=0 && r<len){l--;r++;lcnt+=2;}
l = i;r = i+1;rcnt = 0;//偶数情况
while(str[l] == str[r] && l>=0 && r<len){l--;r++;rcnt+=2;}
ans = max(ans,max(lcnt,rcnt));
}
printf("%d\n",ans);
}
return 0;
}