647. Palindromic Substrings
Input: "abc"
Output: 3
Explanation: Three palindromic strings: "a", "b", "c".Input: "aaa"
Output: 6
Explanation: Six palindromic strings: "a", "a", "a", "aa", "aa", "aaa".// Dynamic programming
int countSubstrings(string s) { // time: O(n^2); space: O(n^2)
int n = s.size(), res = 0;
vector<vector<bool> > dp(n, vector<bool>(n, false)); // dp[i][j]: s[i...j] is a palindrome
for (int j = 0; j < n; ++j) {
for (int i = j; i >= 0; --i) {
if (s[i] == s[j]) {
if (j - i < 2 || dp[i + 1][j - 1]) {
dp[i][j] = true;
++res;
}
}
}
}
return res;
}Last updated