Given a string s, partition s such that every substring of the partition is a palindrome.
Return the minimum cuts needed for a palindrome partitioning of s.
For example, given s = "aab"
,
Return 1
since the palindrome partitioning ["aa","b"]
could be produced using 1 cut.
public int minCut(String s) {
int len=s.length();
int[] dp= new int[len];
for(int i=0;i<len;i++){
dp[i]=i;
}
boolean[][] isPalin=new boolean[len][len];
for(int i=0;i<len;i++){
for(int j=i;j>=0;j--){
if(s.charAt(i)==s.charAt(j)&&((i-j<=1)||isPalin[j+1][i-1])){
isPalin[j][i]=true;
if(j==0){
dp[i]=0;
} else {
dp[i]=Math.min(dp[j-1]+1,dp[i]);
}
}
}
}
return dp[len-1];
}