func findSubstringInWraproundString(p string) (cnt int) { n := len(p) if n == 0 { return } dp := make([]int, 256) runes := []rune(p) l := 1 dp[runes[0]] = 1 for i := 1; i < n; i++ { if runes[i] != rune((runes[i-1]-'a'+1)%26+'a') { l = 1 } else { l++ } if dp[runes[i]] < l { dp[runes[i]] = l } } for i := 'a'; i <= 'z'; i++ { cnt += dp[i] } return }