Move History

Fork Selected
  • Description

    Given a string S of length N, the task is to find the length of the longest palindromic substring from a given string.

    Examples:

    Input: S = “abcbab” Output: 5 Explanation: string “abcba” is the longest substring that is a palindrome which is of length 5.

    Input: S = “abcdaa” Output: 2 Explanation: string “aa” is the longest substring that is a palindrome which is of length 2.

    Note: If the string is empty or None or null then just return 0.do not try to convert the string to lowercase

    Code
    def length_longest_palindrome(string):
        n = len(string) 
        if n == 0:
            return 0 
        
        maxlen = 1
        table = [[False for i in range(n)]for j in range(n)] 
        for i in range(n):
            table[i][i] = True
            
        start = 0 
        for i in range(n-1):
            if string[i] == string[i+1]:
                table[i][i+1] = True 
                start = i 
                maxlen = 2 
                
        for k in range(3,n+1):
            for i in range(n-k+1):
                j = i + k - 1 
                if table[i+1][j-1] and string[i] == string[j]:
                    table[i][j] = True
                    
                    if k > maxlen:
                        start = i 
                        maxlen = k 
        return maxlen 
    Test Cases
    import codewars_test as test
    # TODO Write tests
    import solution # or from solution import example
    
    # test.assert_equals(actual, expected, [optional] message)
    @test.describe("Example")
    def test_group():
        @test.it("test case")
        def test_case():
            test.assert_equals(length_longest_palindrome(''),0)
            test.assert_equals(length_longest_palindrome('a'),1)
            test.assert_equals(length_longest_palindrome('aaabbaa'),6)
            test.assert_equals(length_longest_palindrome('Hannah'),4)
            test.assert_equals(length_longest_palindrome('geeks'),2) 
            test.assert_equals(length_longest_palindrome('forgeeksskeegfor'),10)
            test.assert_equals(length_longest_palindrome('aab'),2)
            test.assert_equals(length_longest_palindrome('Abbas'),2)