intcountSubstrings(string s){ int n = s.size(); dp.resize(n, vector<int>(n, -1)); int res = 0; for (int i = 0; i < n; i++) { for (int j = i; j < n; j++) { if (isParlindromic(i, j, s)) { res++; } } } return res; }
boolisParlindromic(int i, int j, string& s){ if (i >= j) { returntrue; } if (dp[i][j] != -1) { return dp[i][j]; } int& res = dp[i][j]; if (s[i] != s[j]) { res = false; return res; } res = isParlindromic(i + 1, j - 1, s); return res; } };