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.
int minCut(string s) { //C++
int len = s.size();
if(len == 0)
return 0;
vector<int> nodes(len+1);
for(int i = 0; i<=len; i++)
nodes[i]=i-1;
for(int i = 0; i<len; i++){
for(int j = 0; i+j<len&&i-j>=0&&s[i+j]==s[i-j] ;j++ )
nodes[i+j+1] = min(nodes[i+j+1],nodes[i-j]+1);
for(int j = 0; i+j-1<len&&i-j>=0&&s[i+j-1]==s[i-j] ;j++ )
nodes[i+j] = min(nodes[i+j],nodes[i-j]+1);
}
return nodes[len];
}[leetcode]Palindrome Partitioning II
原文地址:http://blog.csdn.net/chenlei0630/article/details/43150467