程式語言 - LeetCode - C - 5. Longest Palindromic Substring



參考資訊:
https://www.cnblogs.com/grandyang/p/4464476.html

題目:


解答:

void search(const char *s, int l, int r, int *start, int *cnt)
{
    int len = strlen(s);
 
    while ((l >= 0) && (r < len) && (s[l] == s[r])) {
        l-= 1;
        r+= 1;
    }

    if (*cnt < (r - l - 1)) {
        *start = l + 1;
        *cnt = r - l - 1;
    }
}
 
char* longestPalindrome(char *s)
{
    int i = 0;
    int cnt = 0;
    int start = 0;
    int len = strlen(s);
 
    if (len < 2) {
        return s;
    }
 
    for (i = 0; i < len - 1; i++) {
        search(s, i, i, &start, &cnt);
        search(s, i, i + 1, &start, &cnt);
    }
 
    s[start + cnt] = 0;
    return &s[start];
}