From bd734df7ddbce4b13b6f92d18e3afb1a247b64e2 Mon Sep 17 00:00:00 2001 From: iamfaker-debug <53421246+iamfaker-debug@users.noreply.github.com> Date: Thu, 24 Oct 2019 16:46:34 +0530 Subject: [PATCH] Create palindrome_partitioning.py --- dp/palindrome_partitioning.py | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 dp/palindrome_partitioning.py diff --git a/dp/palindrome_partitioning.py b/dp/palindrome_partitioning.py new file mode 100644 index 0000000..04c8049 --- /dev/null +++ b/dp/palindrome_partitioning.py @@ -0,0 +1,32 @@ +import sys + +def minPalPartion(str1): + + n = len(str1); + C = [0]*(n+1); + P = [[False for x in range(n+1)] for y in range(n+1)]; + + for i in range(n): + P[i][i] = True; + + for L in range(2, n + 1): + for i in range(n - L + 1): + j = i + L - 1; + + if (L == 2): + P[i][j] = (str1[i] == str1[j]); + else: + P[i][j] = ((str1[i] == str1[j]) and P[i + 1][j - 1]); + for i in range(n): + if (P[0][i] == True): + C[i] = 0; + else: + C[i] = sys.maxsize; + for j in range(i): + if(P[j + 1][i] == True and 1 + C[j] < C[i]): + C[i] = 1 + C[j]; + + return C[n - 1]; + +str1 = "ababbbabbababa"; +print("Min cuts needed for Palindrome Partitioning is",minPalPartion(str1));