Program to find length of longest palindromic substring in Python

PythonServer Side ProgrammingProgramming

Suppose we have a string S. We have to find the length of longest palindromic substring in S. We are assuming that the length of the string S is 1000. So if the string is “BABAC”, then the longest palindromic substring is “BAB” and length is 3.

To solve this, we will follow these steps −

  • Define one square matrix of order same as the length of string, and fill it with False

  • Set the major diagonal elements as true, so DP[i, i] = True for all i from 0 to order – 1

  • start := 0

  • for l in range 2 to length of S + 1

    • for i in range 0 to length of S – l + 1

      • end := i + l

      • if l = 2, then

        • if S[i] = S[end - 1], then

          • DP[i, end - 1] = True, max_len := l, and start := i

      • otherwise

        • if S[i] = S[end - 1] and DP[i + 1, end - 2], then

          • DP[i, end - 1] = True, max_len := l, and start := i

  • return max_len

Let us see the following implementation to get better understanding −

Example

class Solution(object):
   def solve(self, s):
      dp = [[False for i in range(len(s))] for i in range(len(s))]
         for i in range(len(s)):
            dp[i][i] = True
         max_length = 1
         start = 0
         for l in range(2,len(s)+1):
            for i in range(len(s)-l+1):

               end = i+l

               if l==2:
                  if s[i] == s[end-1]:
                     dp[i][end-1]=True
                     max_length = l
                     start = i
               else:
                  if s[i] == s[end-1] and dp[i+1][end-2]:
                     dp[i][end-1]=True
                  max_length = l
                  start = i
return max_length

ob = Solution()
print(ob.solve('BABAC'))

Input

"ABBABBC"

Output

5
raja
Published on 10-Oct-2020 17:11:17
Advertisements