最长回文子串(暴力破解)

2021年09月16日 阅读数:2
这篇文章主要向大家介绍最长回文子串(暴力破解),主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

题目描述

给定一个字符串 s,找到 s 中最长的回文子串。spa

解题思路

此解题方法为暴力破解,经过找到一个字符,而后分别向两边扩展,直到找到最长的回文子串。code

char * longestPalindrome(char * s){
    int length=strlen(s); //字符串长度
    int start=0,len=0;//记录初始位置和子串长度
    /**
    长度为奇数时
    */
    for(int i=0;i<length;++i){
        int left=i-1,right=i+1;
        while(left>=0 && right<length && s[left]==s[right]){
            left--;right++;
        }
        if(right-left-1>len){
            start=left+1;
            len=right-left-1;
        }
    }
    /**
    长度为偶数时
    */
    for(int i=0;i<length;++i){
        int left=i,right=i+1;
        while(left>=0 && right<length && s[left]==s[right]){
            left--;right++;
        }
        if(right-left-1>len){
            start=left+1;
            len=right-left-1;
        }
    }
    s[start+len]='\0';  //
    return s+start;

}

////才发现一个关于字符串的问题,若是一个长度为10的字符串str,例如:“0123456789”,若是将s[5]='\0',再返回s+2,那么这个返回的字符串就会变成“234”blog

下一篇: 两数相加