好,我自己做出来的。多总结规律,多思考。

 



package com.company;


import java.util.HashMap;
import java.util.Map;

class Solution {
public int findSubstringInWraproundString(String p) {
Map<Integer, Integer> mp = new HashMap<>();
int ret = 0;
int cur = 0;
char[] array = p.toCharArray();
if (array.length < 1) {
return 0;
}
for (int i=0; i<26; i++) {
mp.put(i, 0);
}

ret++;
cur++;
mp.put(array[0]-'a', 1);
for (int i=1; i<array.length; i++) {
if ((array[i]-array[i-1]+26) % 26 == 1) {
cur++;
}
else {
cur = 1;
}

if (cur > mp.get(array[i]-'a')) {
ret += cur - mp.get(array[i]-'a');
mp.put(array[i]-'a', cur);
}
}
return ret;
}
}

public class Main {

public static void main(String[] args) throws InterruptedException {

String p = "zab";

Solution solution = new Solution();
int ret = solution.findSubstringInWraproundString(p);

// Your Codec object will be instantiated and called as such:
System.out.printf("ret:%d\n", ret);

System.out.println();

}

}