Untitled
raw download clone
C
views 27
,
size 1483 b
#include<stdio.h>
#include<string.h>

char s[2002];
int slen;
int Estring_checker(int);
/*int Estring_checker(int l,int r)//跑遍所有substrings
{
     int i;
     if((r-l)%2)
     {
          for(i=0;i<(r-l+1)/2;i++)
          {
               if(s[r-i]!=s[l+i])break;
          }
          if(i==(r-l+1)/2)return 1;
     }
     else
     {
          for(i=0;i<(r-l)/2;i++)
          {
               if(s[r-i]!=s[l+i])break;
          }
          if(i==(r-l)/2)return 1;
     }
     return 0;
}*/

int main(void)
{
     int count=0;
     while(scanf("%s",s)!=EOF)
     {
          slen=strlen(s);
          /*for(int i=0;i<slen;i++)
          {
               for(int j=1;j<=slen-1-i;j++)
               {
                    if(Estring_checker(i,i+j))count++;
               }
          }*/
          if(s[0]==s[1])count++;
          for(int i=1;i<slen-1;i++)
          {
               count+=Estring_checker(i);
          }
          printf("%d\n",count);
          count=0;
     }


     return 0;
}
int Estring_checker(int x)
{
     int i,range;
     int num=0;
     if(x>=slen/2)range=slen-x-1;
     else range=x;
     for(i=1;i<=range;i++)//自己當中間點,向兩邊展開
     {
          if(s[x-i]==s[x+i])num++;
          else break;
     }
     for(i=1;i<=range+1;i++)//自己跟下一位做展開
     {
          if(s[x-i+1]==s[x+i])num++;
          else break;
     }

     return num;
}
close fullscreen
Login or Register to edit or fork this paste. It's free.