classSolution(object):defminCut(self, s):"""
:type s: str
:rtype: int
"""#p[j][i] 判断j-i是否是回文序列 dp[i]0~i的最少分割
ls=len(s)
dp=[0]*(ls+1)
dp[0]=-1
p=[[False]*ls for i inrange(ls)]for i inrange(ls):
dp[i+1]=i
for i inrange(ls):for j inrange(i+1):if s[j]==s[i]and((i-j<2)or p[j+1][i-1]):
p[j][i]=True
dp[i+1]=min(1+dp[j],dp[i+1])return dp[ls]