看到有多少种应当想象是否用DP做,文章提示了开辟一个长度为26的数组
存储的是以字母为结尾的字串,例如以b结尾,那么如果有b,ab,zab,yzab即dp[ord(‘b’)-97]=4
class Solution:
def findSubstringInWraproundString(self, p):
"""
:type p: str
:rtype: int
"""
if len(p)<1: return 0
dp=[0]*26
dp[ord(p[0])-97]+=1
curlen=1
for i in range(1,len(p)):
d=ord(p[i])-97
if d-ord(p[i-1])+97==1 or d-ord(p[i-1])+97==-25:#如果是下一个字母
curlen+=1
dp[d]=max(curlen,dp[d])
else:
curlen=1
dp[d]=max(dp[d],1)
return sum(dp)