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.
def minCut(S): dp = [len(S) for _ in S] print dp index = 0 while index < len(S): if isPalindrome(S[:index + 1]): dp[index] = 0 j = 1 while j <= index: if isPalindrome(S[j:index + 1]): dp[index] = min(dp[index], dp[j - 1] + 1) else: dp[index] = min(dp[index], dp[j - 1] + index - j + 1) j += 1 index += 1 return dp[len(S) - 1] def isPalindrome(s): i = 0 j = len(s) - 1 while i < j: if s[i] == s[j]: i += 1 j -= 1 else: return False return True print minCut("abaccddgerg")
本文介绍了一个算法问题:如何计算将字符串分割成多个回文子串所需的最少切割次数。通过动态规划的方法,文章给出了一个高效的解决方案,并附带了实现代码。
1541

被折叠的 条评论
为什么被折叠?



