zoukankan      html  css  js  c++  java
  • 求解最长回文子串

    // A O(n^2) time and O(1) space program to find the longest palindromic substring
    #include <string.h>
    
    // A utility function to print a substring str[low..high]
    void printSubStr(char* str, int low, int high)
    {
        for( int i = low; i <= high; ++i )
            printf("%c", str[i]);
    }
    
    int longestPalSubstr(char *str)
    {
        int maxLength = 1;  // The result (length of LPS)
        int start = 0;
        int len = strlen(str);
        int low, high;
    
        auto detect = [&]() {
            while (low >= 0 && high < len && str[low] == str[high])
            {
                if (high - low + 1 > maxLength)
                {
                    start = low;
                    maxLength = high - low + 1;
                }
                --low;
                ++high;
            }
        };
        // One by one consider every character as center point of
        // even and length palindromes
        for (int i = 1; i < len; ++i)
        {
            // Find the longest even length palindrome with center points
            // as i-1 and i.
            low = i - 1;
            high = i;
            detect();
    
            // Find the longest odd length palindrome with center
            // point as i
            low = i - 1;
            high = i + 1;
            detect();
        }
        printf("Longest palindrome substring is: ");
        printSubStr(str, start, start + maxLength - 1);
        
        return maxLength;
    }
    
    // Driver program to test above functions
    int main()
    {
        char str[] = "12312345665432112345678987654321123";
        printf("
    Length is: %d
    ", longestPalSubstr( str ) );
        return 0;
    }
    
  • 相关阅读:
    javaSE第十五天
    javaSE第十四天
    javaSE第十三天
    javaSE第十二天
    javaSE第十一天
    javaSE第十天
    javaSE第九天
    python011 Python3 字典
    python010 Python3 元组
    python009 Python3 列表
  • 原文地址:https://www.cnblogs.com/ydlme/p/4521194.html
Copyright © 2011-2022 走看看