字符串的回文子串 java 中心扩展
时间: 2023-08-08 16:14:09 浏览: 100
好的,以下是Java实现字符串的回文子串的中心扩展算法的代码示例:
```java
public class PalindromicSubstring {
public int countSubstrings(String s) {
int count = 0;
for (int i = 0; i < s.length(); i++) {
// 以i为中心,向左右扩展
int len1 = expandFromCenter(s, i, i);
// 以i和i+1为中心,向左右扩展
int len2 = expandFromCenter(s, i, i + 1);
count += len1 + len2;
}
return count;
}
private int expandFromCenter(String s, int left, int right) {
int count = 0;
while (left >= 0 && right < s.length() && s.charAt(left) == s.charAt(right)) {
count++;
left--;
right++;
}
return count;
}
}
```
这里的思路是:枚举每个可能的中心位置,然后以该中心位置向左右两侧扩展,直到不能扩展为止。具体实现时,需要分别处理回文子串长度为奇数和偶数的情况,最后统计回文子串的数量即可。时间复杂度为 $O(n^2)$,空间复杂度为 $O(1)$。
阅读全文