原理:
- 分析回文子串发现,回文子串是以一个字符为中心和两个相同的字符为中心两种情况
- 回文子串都是在回文中心两边添加相同字符以构成回文串
- 只要找出回文中心,在两边附加相同字符就可构成回文
C++实现:
int countSubstrings(string s) {
int len=s.length();
int sum=0;
for(int i=0;i<2*len-1;i++) //最多有2*n-1回文中心
{
int low=i/2; //回文中心左
int high=i/2+i%2; //回文中心右
while(low>=0&&high<len&&s[low]==s[high]) //如果回文中心两边附加的字符相同,则就是回文子串
{
low--;
high++;
sum++;
}
}
return sum;