给出一个字符串s,分割s使得分割出的每一个子串都是回文串 计算将字符串s分割成回文分割结果的最小切割数
class Solution {
private:
string s;
int f[1000][1000];
public:
int minCut(string s) {
this -> s = s;
int len = s.length();
for(int t=0;t<=len;t++)
for(int i=0,j=t;j<len;i++,j++)
f[i][j] = comCut(i,j);
return f[0][s.length()-1];
}
int comCut(int i,int j){
if(isPalindrome(i,j))return 0;
int min = s.length();
for(int p = i;p<j;p++){
int a = f[i][p];
int b = f[p+1][j];
a = a + b +1;
min = min < a ? min : a;
}
return min;
}
bool isPalindrome(int i,int j){
while(i<j){
if(s[i]!=s[j])return false;
i++;j--;
}
return true;
}
};