zoukankan      html  css  js  c++  java
  • 最长回文子串

     1 /*
     2 描述 
     3 输入一个字符串,求出其中最长的回文子串。子串的含义是:在原串连续出现的字符串片段。回文的含义是:正着看和倒着看是相同的,如abba和abbebba。在判断是要求忽略所有的标点和空格,且忽略大小写,但输出时按原样输出(首尾不要输出多余的字符串)。输入字符串长度大于等于1小于等于5000,且单独占一行(如果有多组答案,输出第一组)。 
     4 输入 
     5 输入一个测试数据n(1<=n<=10);
     6 随后有n行,每行有一个字符串。 
     7 输出 
     8 输出所要求的回文子串。 
     9 样例输入 
    10 1
    11 Confuciuss say:Madam,I'm Adam.样例输出 
    12 Madam,I'm Adam
    13 */
    14 #include<stdio.h>
    15 #include<string.h>
    16 
    17 char a[5050];
    18 char b[5050];
    19 int p[5050];
    20 
    21 void fun()
    22 {
    23     int i,j,n,max,x,y;
    24     n=strlen(a);
    25     for(i=0,j=0;i<n;i++)
    26     {
    27         if(a[i]>='a'&&a[i]<='z')
    28         {
    29             p[j]=i;
    30             b[j++]=a[i];
    31         }
    32         else if(a[i]>='A'&&a[i]<='Z')
    33         {
    34             p[j]=i;
    35             b[j++]=a[i]+32;
    36         }
    37     }
    38     n=j;
    39     max=0;
    40     for(i=0;i<n;i++)
    41     {
    42         for(j=0;i-j>=0&&i+j<n;j++)
    43         {
    44             if(b[i-j]!=b[i+j]) break;
    45             if(j*2+1>max) 
    46             {
    47                 max=j*2+1;
    48                 x=p[i-j];
    49                 y=p[i+j];
    50             }
    51         }
    52         for(j=0;i-j>=0&&i+j+1<n;j++)
    53         {
    54             if(b[i-j]!=b[i+j+1]) break;
    55             if(j*2+2>max)
    56             {
    57                 max=j*2+2;
    58                 x=p[i-j];
    59                 y=p[i+j+1];
    60             }
    61         }
    62     }
    63     for(i=x;i<=y;i++)
    64         printf("%c",a[i]);
    65     printf("\n");
    66 }
    67 int main()
    68 {
    69     int t;
    70     scanf("%d",&t);
    71     getchar();
    72     while(t--)
    73     {
    74         gets(a);
    75         fun();
    76     }
    77     return 0;
    78 }
  • 相关阅读:
    关于locals()、globals()以及作用域的一些感悟
    Python中创建对象的方法
    Python之__loader__
    tag上、push上和pull 取Docker 映像
    制作Docker镜像
    在Docker Hub上查找可用的Image映像
    window下安装mysql
    linux下安装python3
    yun、apt、wget的区别
    红帽7 Squid部署代理服务
  • 原文地址:https://www.cnblogs.com/xiaofanke/p/3114293.html
Copyright © 2011-2022 走看看