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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • stm32F103中文参考手册

    stm32F103中文参考手册今天你在网上查找STM32F103的中文手册很多都需要积分下载,所以小编在此发送一个免费下载的连接,希望帮助有需要的朋友,在此声明感谢所有网上开源的朋友;之前链接失效现在重新上传,如在失效请联系;链接:https://pan.baidu.com/s/1fQCQ3WEePOu6W3dfi7GCLg提取码:wuqk…

    2022年10月16日
    1
  • MFC 获取窗口句柄

    MFC 获取窗口句柄1、使用FindWindow函数获取窗口句柄示例:使用FindWindow函数获取窗口句柄,然后获得窗口大小和标题,并且移动窗口到指定位置。#include<Windows.h>#include<stdio.h>#include<string.h>#include<iostream.h>intmain(intargc,char*argv[]){ //根据窗口名获取QQ游戏登录窗口句柄 HWNDhq=FindWind

    2022年7月21日
    10
  • [转载]【电子书下载神器】太给力了!你还找不到想要的电子书吗?

    [转载]【电子书下载神器】太给力了!你还找不到想要的电子书吗?1.电子书下载网(推荐)读远:发掘优质电子书资源Kindle精读书库Hi!PDAHi!PDAreadfree.me子乌书简 苦瓜书盘mLook看书掌上书苑-主页新浪微盘 | 免费网盘    2.电子书网站  E书吧-免

    2022年7月15日
    19
  • APK签名流程介绍[通俗易懂]

    APK签名流程介绍[通俗易懂]实际上,现在Android开发IDE自带签名功能,但是有时我们还是可能遇到自己签名apk的场景的,比如你有一个未签名的apk,但是你要adbinstall到device上,这时我们在adbinstall之前就必须对该apk进行签名处理才能install成功,这篇文章就简单的介绍下apk签名流程吧。1、生成签名证书签名需要签名证书,签名证书类型实际上是有很多的,如jks、keysto…

    2022年6月13日
    41
  • 图的存储及遍历 深度遍历和广度遍历 C++代码实现

    写这个程序给我的感觉就是乱,思路不是很清晰,遍历的逻辑关系还掌握的不是很熟,只是大概知道是这么回事,但是让自己去写的话,可能就写不出来了!还是要加大对遍历的熟悉程度才行啊!PS:另外推荐一个让大家真

    2021年12月25日
    44
  • 谷歌 analytics.js 部分解密版

    谷歌 analytics.js 部分解密版源:http://www.google-analytics.com/analytics.js(function(){varaa=encodeURIComponent,f=window,ba=setTimeout,n=Math;functionPc(a,b){returna.href=b}functionfa(a,b){returna.name=b}varQc=”repla…

    2022年7月26日
    11

发表回复

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

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