• 最长回文子串


     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 }
  • 相关阅读:
    Ansible
    Ansible
    MySQL
    JS计算时间差(天,时,分钟,秒)
    cookie,localStorage,sessionStorage的区别
    css布局 -双飞翼布局&圣杯布局
    Python批量爬取网站图片
    vue-cli3中引入图片的几种方式和注意事项
    git常用命令
    vue-cli3的打包并在本地查看
  • 原文地址:https://www.cnblogs.com/xiaofanke/p/3114293.html
Copyright © 2020-2023  润新知