1、前言
题目描述2、思路
此题与最长回文子串很像,只不过那个是求最长的回文子串,而这个是求回文子串的数目。但是他们的解法是一样的,都是针对字符串的每一位由中心向两边扩展,扩展的时候分为 (i, i) 与 (i, i + 1) 两种情况即可。
3、代码
public class Q647_CountSubstrings {
public int countSubstrings(String s) {
if(s == null || s.length() == 0){
return 0;
}
int count = 0;
for (int i = 0; i < s.length(); i++) {
count += paran(s, i, i);
count += paran(s, i, i + 1);
}
return count;
}
private int paran(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;
}
}
网友评论