利用python 完成 leetcode132 分割回文串 II

给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。

返回符合要求的最少分割次数。

示例:

输入: “aab”
输出: 1
解释: 进行一次分割就可将 s 分割成 [“aa”,“b”] 这样两个回文子串。
思路
动态规划
简历数组dp
dp[i]表示前i个字母的最少分割次数,默认为i-1。
当s[a:b]==s[a:b][::-1]时,dp[b]=dp[a]+1
回文有两种情况字符数为奇数或偶数个,如‘aba’和‘bb’
代码

  def minCut(self, s):
        if s == s[::-1]: return 0
        for i in range(1,len(s)):
            if s[i:] == s[:i-1:-1] and s[:i] == s[i-1::-1]: return 1
        dp = []
        for i in range(-1,len(s)):
            dp.append(i)
        for i in range(len(s)):
            t=0
            while i-t >=0 and i+t=0  and i+t+1

你可能感兴趣的:(leetcode,leetcode困难)