最长回文字符串&&双指针

int countlen(char* s, int n,int left, int right)

{

    int len=0;

    while((left>=0)&&(right<n)&&(s[left]==s[right]))

    {

        len=right-left+1;

        left--;

        right++;

    }

    return len;

}

char* longestPalindrome(char* s) {

    int size=strlen(s);

    char* res=malloc(sizeof(char)*(size+1));

    int len1=0,len2=0,length=0,maxlength=0;

    int end=0,start=0;

    for(int i=0;i<size;i++)

    {


        len1=countlen(s,size,i,i);

        len2=countlen(s,size,i,i+1);

        length=len1>len2?len1:len2;

       if(length>end-start)

       {

          start=i-(length-1)/2;

          end=i+length/2;

       }  

    }

    int i=0, j=0;

    for(i=0,j=start;j<=end;j++,i++)

    {

        res[i]=s[j];

    }

    res[i]='\0';

    return res;

}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容