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

    /*最长回文子串*/
    #include<iostream>
    #include<string.h>
    #include<ctype.h>
    using namespace std;
    #define Max 5000 +10
    char buf[Max],s[Max];
    int p[Max];
    int main()
    {
        int n,m=0,max=0;
        int i,j;
        //int k;
        int x,y;
        fgets(buf,sizeof(s),stdin);
        n=strlen(buf);
        for(i=0;i<n;i++)
            if(isalpha(buf[i]))
            {
                p[m]=i;
                s[m++]=toupper(buf[i]);
            }
            for(i=0;i<m;i++)
            {
                /*for(j=i;j<m;j++)
                {
                    int ok=1;
                    for(k=i;k<=(i+j)/2;k++)
                        if(s[k]!=s[i+j-k])ok=0;
                    if(ok&&j-i+1>max)
                        max=j-i+1;
                }枚举法*/
                for(j=0;i-j>0&&i+j<m;j++)
                {
                    if(s[i-j]!=s[i+j])
                        break;
                    if(2*j+1>max)
                    {
                        max=j*2+1;x=p[i-j];y=p[i+j];
                    }
                }//奇数
                for(j=0;i-j>0&&i+j+1<m;j++)
                {
                    if(s[i-j]!=s[i+j+1])
                        break;
                    if(2*j+2>max)
                    {
                        max=j*2+2;x=p[i-j];y=p[i+j+1];
                    }
                }//偶数
                //中间到两边法
            }
                printf("max= %d\n",max);
                for(i=x;i<=y;i++)
                    printf("%c",buf[i]);
                printf("\n");
                 return 0;
    }
  • 相关阅读:
    C#语法糖
    C#十种语法糖
    委托
    C#迭代器
    C#事件
    C#事件
    c# event 事件浅析
    ASP.NET CORE 增删改查
    asp.net core 增删改查
    asp.net core 搭建MVC
  • 原文地址:https://www.cnblogs.com/heqinghui/p/2753482.html
Copyright © 2011-2022 走看看