要求:判断回文子串个数
思路:动规,或者另一种中心扩展,从1个和2个为中心
class Solution {
public:
int countSubstrings(string s) {
int n=s.size();
vector<vector<int>> dp(n,vector<int>(n));
int num=n;
for(int i=0;i<n-1;++i){
dp[i][i]=1;
if(s[i]==s[i+1]){
dp[i][i+1]=1;
++num;
}
}
dp[n-1][n-1]=1;
for(int len=0;len+3<=n;++len){
for(int i=1;i+len<n-1;++i){
int j=i+len;
if(dp[i][j]&&s[i-1]==s[j+1]){
dp[i-1][j+1]=1;
++num;
}
}
}
return num;
}
};