public static List<String> maxLength(String str) {         if (str == null || str.length() == 0) {             return new ArrayList<>();         }         char[] arr = getManacherString(str);         int[] pArr = new int[arr.length];         int center = -1;         int right = -1;         int max = Integer.MIN_VALUE;         for (int i = 0; i < arr.length; i++) {             pArr[i] = right > i ? Math.min(pArr[2 * center - i], right - i) : 1;             while (i + pArr[i] < arr.length && i - pArr[i] > -1) {                 if (arr[i + pArr[i]] == arr[i - pArr[i]]) {                     pArr[i]++;                 }else {                     break;                 }             }             if (i + pArr[i] > right) {                 right = i + pArr[i];                 center = i;             }             max = Math.max(max,pArr[i]);         }