思路
思路同最长回文子串,只不过此题再开辟一个变量记录回文子串出现的次数即可
代码
class Solution {
public:
int countSubstrings(string s) {
vector<vector<bool>> dp(s.size(), vector<bool>(s.size()));
//初始化
int ans = 0;
for (int i=0;i<s.size();i++)
{
dp[i][i] = 1;
ans++;
if (s[i] == s[i + 1]) {
dp[i][i + 1] = 1;
ans++;
}
}
//状态转移
for (int len=3;len<=s.size();len++)
{
for (int i=0;i+len-1<s.size();i++)
{
int j = i + len - 1;
if (s[i]==s[j]&&dp[i+1][j-1])
{
ans++;
dp[i][j] = 1;
}
else
{
dp[i][j] = 0;
}
}
}
return ans;
}
};