Program to find number of ways we can split a palindrome in python

Suppose we have a string s, we have to find the number of ways we can partition the string such that each part is a palindrome.

So, if the input is like s = "xyyx", then the output will be 3, as we have splits like: ["x", "yy", "x"], ["x", "y", "y", "x"], ["xyyx"].

To solve this, we will follow these steps:

  • n := size of s
  • table := a list of size n + 1 and fill it with 0
  • table[0] := 1
  • for i in range 0 to n, do
    • for j in range 0 to i - 1, do
      • sub := s[from index j to i]
      • if sub is palindrome, then
        • table[i] := table[i] + table[j]
  • return last element of table

Let us see the following implementation to get better understanding:


Live Demo

class Solution:
   def solve(self, s):
      n = len(s)
      table = [1] + [0] * n
      for i in range(n + 1):
         for j in range(i):
            sub = s[j:i]
            if sub == sub[::-1]:
               table[i] += table[j]
      return table[-1]

ob = Solution()
s = "xyyx"