Traverse the array,every times start from the current postion extend to both sides.
// 1040. Longest Symmetric String.cpp: 主项目文件。 #include "stdafx.h" #include <cstdio> #include <cstring> const int N=1003; char str[N]; int isSymmetric(char *str,int length){ int max=0; for(int i=0;i<length;i++){ int low=i,high=i+1; while(low>=0&&high<length&&str[low]==str[high]) low--,high++; int dist=high-low-1; if(dist>max) max=dist; low=i-1,high=i+1; while(low>=0&&high<length&&str[low]==str[high]) low--,high++; dist=high-low-1; if(dist>max) max=dist; } return max; } int main() { gets(str); int length=strlen(str); int res=isSymmetric(str,length); printf("%d\n",res); return 0; }