Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
67 changes: 67 additions & 0 deletions Java/Palindromic Partitioning
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
//{ Driver Code Starts
//Initial Template for Java

import java.io.*;
import java.util.*;

class GFG{
public static void main(String args[])throws IOException
{
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
int t = Integer.parseInt(in.readLine());
while(t-- > 0){
String str = in.readLine();
Solution ob = new Solution();
System.out.println(ob.palindromicPartition(str));
}
}
}
// } Driver Code Ends


//User function Template for Java

class Solution{
public static boolean isPalindrome(String s,int i,int j)
{
int st = i;
int e = j;
while(st < e)
{
if(s.charAt(st) != s.charAt(e))
{
return false;
}
st++;
e--;
}
return true;
}
static int palindromicPartition(String s)
{
int n = s.length();
int dp[][] = new int[n][n];
for(int i=0;i<n;i++)
dp[i][i] =0;
for(int i = n-1;i>=0;i--)
{
for(int j = i+1;j<n;j++)
{
if(isPalindrome(s,i,j) == true)
{
dp[i][j] = 0;
}
else{
int mini = Integer.MAX_VALUE;
for(int k=i;k<j;k++)
{
int cost = dp[i][k]+dp[k+1][j]+1;
mini = Integer.min(cost,mini);
}
dp[i][j] = mini;
}
}
}
return dp[0][n-1];
}
}