最长回文子串

/*
最长回文子串。
*/
#include<stdio.h>
#include<malloc.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#include <iostream>
int getMax(int a,int b){
    if(a<b)
        return b;
    return a;
}
int getLen(char *s,int i,int j){
    int len=strlen(s);
    while(i<len&&j>=0&&s[i]==s[j]){
        i--;
        j++;
    }
    return j-i-1;
}
char * longestPalindrome(char * s){
    int curlen=0,maxlen=0,i,j,len=strlen(s),start;
    char *rs;
    for(i=0;i<len;i++){
        curlen=getMax(getLen(s,i,i),getLen(s,i,i+1));
        if(curlen>maxlen){
            maxlen=curlen;
            start=i-(maxlen-1)/2;
        }
    }
    rs=(char*)malloc(sizeof(char)*100);
    strncpy(rs,s+start,maxlen);
    return rs;
}

int main()
{
    char s[100],*rs;
    gets(s);
    rs=longestPalindrome(s);
    printf("%s\n",rs);
    return 0;
}

 

posted @ 2020-03-28 16:36  dreamy_java  阅读(148)  评论(0编辑  收藏  举报