C语言 最长回文子串[通俗易懂]

C语言 最长回文子串[通俗易懂]描述:输入一个字符串,求其中最长回文子串。子串的含义是:在字符串中连续出现得字符串片段。回文的含义是,正着看和倒着看是相同的,如abba何abbebba。在判断时要求忽略所有的标点和空格,且忽略大小写。但输出时按原样输出(首尾不要输出多余的字符串).输入字符串长度大于等于1小于等于5000.且单独占一行。输入:输入一行字符串。输出:输出所要求的回文子串。样例输入:L…

大家好,又见面了,我是你们的朋友全栈君。

描述:输入一个字符串,求其中最长回文子串。子串的含义是:在字符串中连续出现得字符串片段。回文的含义是,

正着看和倒着看是相同的,如abba何abbebba。在判断时要求忽略所有的标点和空格,且忽略大小写。但输出时按原样输出

(首尾不要输出多余的字符串).输入字符串长度大于等于1小于等于5000.且单独占一行。

输入:

输入一行字符串。

输出:

输出所要求的回文子串。

样例输入:

Last Week,todo level odot,King

样例输出:

k,todo level odot,K

代码:

#include<stdio.h>
#include<string.h>
#include<ctype.h>
int main()
{
    char s[5000],s1[5000];int i,j,m=0,pri[5000],max=0,x,y,n;
    gets(s);
    n=strlen(s);
    for (i=0;i<n;i++)
    {

      if(isalpha(s[i]))
      {
          pri[m]=i;
          s1[m++]=toupper(s[i]);

      }
    }
    for (i=0;i<m;i++)
    {

            for (j=0;j<=i&&i+j<m;j++)
        {
            if(s1[i-j]!=s1[i+j])break;//奇数
            if((2*j+1)>max)
              {
                  max=2*j+1;
                  x=pri[i-j];
                  y=pri[i+j];
              }
        }
             for (j=0;j<=i&&i+j<m;j++)
        {
            if (s1[i-j]!=s1[i+j+1])break;//偶数
            if ((2*j+2)>max)
            {
                max=2*j+2;
                x=pri[i-j];
                y=pri[i+j+1];
            }
        }


    }
    for (i=x;i<=y;i++)
        printf("%c",s[i]);
    return 0;
}

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/134020.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • mysql 取模分区_MySQL分区

    mysql 取模分区_MySQL分区分表是将一个大表按照一定的规则分解成多张具有独立存储空间的实体表,app读写的时候根据事先定义好的规则得到对应的子表名,然后去操作它。而分区是将数据分段划分在多个位置存放,分区后,表面上还是一张表,但数据散列到多个位置了。app读写的时候操作的还是大表名字,db自动去组织分区的数据。分区类型主要有range、list、hash、key以常规hash举例说明分区是如何创建的常规hash是取模运算创建…

    2022年4月29日
  • 复利计算的总结

    复利计算的总结

    2021年9月13日
  • fastjson中jsonarray转list

    fastjson中jsonarray转listhttps://www.jianshu.com/p/d06dec564459

    2022年6月23日
  • Matlab画图常用的线条符号、颜色

    Matlab画图常用的线条符号、颜色线型说明标记符说明颜色说明-实线(默认)+加号符r红色–双划线o空心圆g绿色:虚线*星号b蓝色:.点划线.实心圆c青绿色x叉号符m洋红色s(square)正方形y黄色d菱形k黑色^上三角形w白色v下三角形&gt;右三角形&lt;左三角形p(pentagram)五角星h(hexagram)六边形square正方形pentagram…

    2022年6月12日
  • OpenStreetMap初探(一)——了解OpenStreetMap

    OpenStreetMap初探(一)——了解OpenStreetMap

    2021年12月15日
  • Avalondock 技巧之如何隐藏浮动面板停靠器

    Avalondock 技巧之如何隐藏浮动面板停靠器avalondock技巧之如何隐藏浮动面板停靠器之前开发的一个项目需要实现窗口的浮出,拖拽,停靠等功能,于是想到了神器Avalondock,这个框架功能相当强大,而且能实现多种主题样式的控件,特别是窗口的浮动停靠等功能。目前该框架有收费版本和开源版本,我之前的项目使用的是avalondockv2.0的,目前最新的是v4.0。官方链接:https://archive.codeplex.com/?p=avalondock.Git链接:https://github.com/xceedsoftware

    2022年7月20日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号