题目
- 从左往右的递归模型,当前位置开始如果满足大于等于k长度且是字符串就切,在切完后继续以切完往后的k个位置为起点继续判断
public static int maxPalindromes1(String s, int k) {
if (s == null || s.length() == 0) {
return 0;
}
char[] str = s.toCharArray();
return process1(str, 0, k);
}
public static int process1(char[] str, int index, int k) {
if (str.length - index < k) {
return 0;
}
// 从左往右遍历
int ans = process1(str, index + 1, k);
// 从当前位置往后的 k 个数为起点,判断是否满足回文,满足就切
for (int i = index + k - 1; i < str.length; i++) {
if (isPalindrome(str, index, i)) {
ans = Math.max(ans, 1 + process1(str, i + 1, k));
}
}
return ans;
}
public static boolean isPalindrome(char[] str, int L, int R) {
while (L < R) {
if (str[L++] != str[R--]) {
return false;
}
}
return true;
}