美文网首页
Longest Palindromic Substring

Longest Palindromic Substring

作者: 我是黄小邪 | 来源:发表于2018-07-19 13:28 被阅读4次

    Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.

    Example 1:

    Input: "babad"
    Output: "bab"
    Note: "aba" is also a valid answer.
    

    Example 2:

    Input: "cbbd"
    Output: "bb"
    

    穷举法

    这个字符串的最大长度为1000,那么穷举法也不会有太大的计算量

    解题思路

    穷举法的思路比较简答,就是遍历每个字符以其为中心的回文串,记录最大值
    

    代码实现

    char* longestPalindrome(char* s) {
        int i, j, l, r, max, n;
        int rl, rr;
        n = strlen(s);
        max = 0;
        
        for (i = 0; i < n; i++) {
            l = r = i;
            while (l > 0 && s[l-1] == s[i]) l--;
            while (r < n - 1 && s[r+1] == s[i]) r++;
            
            while (l > 0 && r < n - 1 && s[l-1] == s[r+1]) {
                l --;
                r ++;
            }
            
            if (r - l + 1 > max) {
                max = r - l + 1;
                rl = l;
                rr = r;
            }
        }
        if (max > 0) {
            char* p = malloc((max + 1)*sizeof(char));
            p[max] = '\0';
            memcpy(p, s+rl, max);
            return p;
        } else {
            return "";
        }
    }
    

    相关文章

      网友评论

          本文标题:Longest Palindromic Substring

          本文链接:https://www.haomeiwen.com/subject/ajqtmftx.html