现在小明拿到了一个字符串,现在他在字符串中找一个起点和终点(不可以指向同一个字符),判断从起点到终点之间的字符串是否是回文串。现在小明想知道,有多少组起点和终点之间的字符串是回文串
这是一个关于字符串的问题。对于这个问题,我们可以采用中心扩展法来解决。具体操作是从字符串的每一个字符开始,向左右两个方向同时扩展,如果扩展到的字符相同,则继续扩展,直到无法扩展为止。这样可以找出所有的回文子串。最后,我们再统计回文子串的数量即可。
程序代码:
#include<stdio.h>
#include<string.h>
int hanshu(char
p[],inta,intb,intc,intd);
int main()
{
int a,b,c,d;
char p[100];
gets§;
hanshu(p,&a,&b,&c,&d);
printf(" 字母个数=%d\n 数字个数=%d\n 空格个数=%d\n 其他字符=%d\n",a,b,c,d);
}
int
hanshu(char p[],inta,intb,intc,intd)
{
int q=0,w=0,e=0,r=0;
int i=0;
for(i=0;i<strlen§;i++)
{
if(p[i]>=‘a’&&p[i]<=‘z’||p[i]>=‘A’&&p[i]<=‘Z’)
q++;
else
if(p[i]>=‘0’&&p[i]<=‘9’)
w++;
else if(p[i]==’ ')
e++;
else
r++;
}
*a=q;
*b=w;
*c=e;
*d=r;
}