palindrome-partitioning-ii

来源:互联网 发布:软件基础架构平台 编辑:程序博客网 时间:2024/06/18 16:59

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 Trueprint minCut("abaccddgerg")

原创粉丝点击