问题描述:
问题分析:
1.回文子串分为奇数位(中心有一个对称点)和偶数位(中间无对称点);
2.以中心点为起始点,向两边逐步扩散,寻求回文的最大长度(过程中相对较小的回文子串顺便计数);
3.遍历数组,以每一个点当作中心点遍历计算。
完整代码:
class Solution
{
public:
int getres(string s, int start, int end)
{
int res = 0;
while (start >= 0 && end < s.size() && s[start] == s[end])
{
res++;
start--;
end++;
}
return res;
}
int countSubstrings(string s)
{
int res = 0;
for (int i = 0; i < s.size(); i++)
{
res += getres(s, i, i);
res += getres(s, i, i+1);
}
return res;
}
};
结果展示: