Palindrome Partitioning II(Hard)

Given a strings, partitionssuch that every substring of the partition is a palindrome.

Return the minimum cuts needed for a palindrome partitioning ofs.

For example, givens="aab",
Return1since the palindrome partitioning["aa","b"]could be produced using 1 cut.

Solution

  1. Palindrome Partitioning II

【分析】

重述题意:输入一个字符串,将其进行分割,分割后各个子串必须是“回文”结构,要求最少的分割次数。显然,为了求取最少分割次数,一个简单的思路是穷尽所有分割情况,再从中找出分割后可构成回文子串且次数最少的分割方法。

解题思路:对于输入字符串如s=“aab”,一个直观的思路是判断“aab”是否构成回文,根据回文的特点是对称性,那么,我们可以判断s[0]与s[2]是否相等,不等,因此“aab”不能构成回文,此后再怎么判断呢???这种无章法的操作没有意义,因为一个字符串构成回文的情况是很复杂的,对于一个长度为n的字符串,其构成回文的子串长度可能的长度分布范围可以是1—n:整体构成回文如“baab”,则子串长度可为n=4;如“cab”,只能构成长度为1的回文子串。

鉴于上述分析,对于一个字符串,我们需要考虑所有可能的分割,这个问题可以抽象成一个DP问题,对于一个长度为n的字符串,设DP\[i\]\[j\]表示第i个字符到第j个字符是否构成回文,若是,则DP\[i\]\[j\]=1;若否,则DP\[i\]\[j\]=0;如此,根据回文的约束条件(对称性),DP\[i\]\[j\]构成回文需满足:

results matching ""

    No results matching ""