C语言--力扣--最长回文子串

给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。

示例 1:

输入: "babad"
输出: "bab"
注意: "aba" 也是一个有效答案。

示例 2:

输入: "cbbd"
输出: "bb"

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-palindromic-substring
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

 

关键点:回文最重要的是中间点,中间往前移,可以分奇偶。这类题目在不考虑优化的前提下是尽量把问题简化,能穷举的穷举,能分类的分类,能找到规律的用规律,总之用机器语言先翻译问题。

#include
#include

char * longestPalindrome(char * s){
    char* strmax=(char *)malloc(1000);
    int numtmp1=0;
    int num=0;
    int mid=0;
    int found=1;
    for(int i=0; i     {
        for(int j=i+1; j         {
            numtmp1 = 0;
            found = 1;
            mid=(j-i)/2;
            for(int k=0; k             {
                if(s[i+k] == s[j-k])
                {
                    numtmp1++;
                }
                else
                {
                    found=0;
                    break;
                }
            }
            if(found == 1 && (j-i) >= num && (j-i)>0)
            {
                memset(strmax, 0x0, 1000);
                memcpy(strmax, &s[i], j-i+1);
                num=j-i+1;
            }
        }
        
    }    
    return strmax;
}
void main()
{
    char a[1000];
    char *pchar=NULL;
    scanf("%s",a);
    pchar=longestPalindrome(a);
    printf("%s\n", pchar);
    return;
}

请指教

你可能感兴趣的:(C语言--力扣--最长回文子串)