解题思路:

注意事项:

参考代码:

//思路:从最长串开始看,符合即为最大回文串长度,否则减1,继续查找

            具体见代码(建议粘贴于编译器上看,结构风格更好,易懂)



#include <stdio.h>

#include <string.h>


int cheak(char *p,int lon);         //判断回文

static int len;                             //全局变量

/*************************************/

int main ()

{

char ch[100];

int ture;

while(scanf("%s",ch)!=EOF)

{

    len=strlen(ch);

    for(int i=len;len>=1;i--)        //从最长串开始看,符合即为最大回文串长度,否则减1

    {

    ture=cheak(ch,i);     

    if(ture)

    {

    printf("%d\n",ture);              //找到最长串,开始下一组数

    break;

        }

}

    }

return 0;

}

/*************************************/

int cheak(char *p,int lon)        //长度为y的回文串检索

{

int a,b;

int y=lon-1;                            //数组下标从0开始,所以长度减1

for (int i=0;y<len;i++,y++)    //每检查lon长度后,右移继续检查回文串

{

  for(a=i,b=y;a<b;a++,b--)     //对比首尾

  {

  if(p[a]!=p[b])

  break;

  }

  if(a<b)                                  //说明break过,不满足回文,右移

  continue;

  else

  return lon;

}

return 0;                                 //都不满足,说明该长度无回文串

}


点赞(0)
 

0.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论