原题题目
![在这里插入图片描述](https://img-blog.csdnimg.cn/2021012511090950.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM3NTAwNTE2,size_16,color_FFFFFF,t_70)
代码实现(首刷看解 😦 )
int countSubstrings(char * s){
int x = strlen(s);
int dp[x][x],end,start,count=0;
for(end=0;end<x;end++)
{
for(start = 0;start<=end;start++)
{
if(end - start <= 2)
dp[start][end] = (s[end] == s[start]);
else
dp[start][end] = ((s[end] == s[start]) && dp[start+1][end-1]);
if(dp[start][end])
count++;
}
}
return count;
}
代码实现(二刷DAY 87 Easy Game)
class Solution {
public:
int countSubstrings(string s) {
int size = s.size(),ret = 0;
vector<vector<int>> dp(size,vector<int> (size,0));
for(int end = 0;end<size;++end)
{
for(int start = end;start>=0;--start)
{
if(s[start] != s[end]) continue;
if(end <= start+1 || dp[start+1][end-1])
{
dp[start][end] = 1;
++ret;
}
}
}
return ret;
}
};