您的位置:首页 > 其它

Leetcode -- Palindrome Partitioning II

2015-10-28 21:48 459 查看
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.

class Solution {
public:
int minCut(string s) {
int n=s.size();
vector<vector<bool>> f(n,vector<bool>(n,0));
for(int i=n-1;i>=0;--i)
for(int j=i;j<n;++j)
if(s[i]==s[j]&&(j-i<2||f[i+1][j-1]))
f[i][j]=1;
vector<int> dp(n,0);
for(int i=n-2;i>=0;--i)
{
if(f[i][n-1]) continue;
int val=INT_MAX;
for(int j=i+1;j<n;++j)
if(f[i][j-1])
val=min(val,dp[j]+1);
dp[i]=val;
}
return dp[0];
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: