123456789101112131415161718192021222324 |
- 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
- }
|