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