您的位置:首页 > 其它

LeetCode:palindrome-partitioning-ii

2017-02-19 10:52 393 查看
链接:https://www.nowcoder.com/practice/1025ffc2939547e39e8a38a955de1dd3?tpId=46&tqId=29048&tPage=1&rp=1&ru=/ta/leetcode&qru=/ta/leetcode/question-ranking

来源:牛客网

题目描述

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”,

Return1since the palindrome partitioning[“aa”,”b”]could be produced using 1 cut.

class Solution {
int dp[1000]={0};
int hw[1000][1000]={0};
public:
int minCut(string s) {
int i,k,N=s.length();
if(s.length()==0)
return 0;
hwb(s);
for(i=0;i<s.length();i++)
{
if(hw[0][i]==1)
dp[i]=0;
else
{
dp[i]=9999;
for(k=i;k>0;k--)
if(hw[k][i]==1)
dp[i]=min(dp[i],dp[k-1]+1);
}
}
return dp[N-1];
}
void hwb(string s)
{
int i,j;
for(i=s.length()-1;i>=0;i--)
for(j=i;j<s.length();j++)
{
if(i==j)
hw[i][j]=1;
else if(j-i==1)
{
if(s[i]==s[j])
hw[i][j]=1;
}
else
{
if(s[i]==s[j]&&hw[i+1][j-1]==1)
hw[i][j]=1;
}
}
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode