Given a string, return # of palindromic substrings in it
Ex. s = "babad" -> "bab", s = "cbbd" -> "bb"
2 pointers, middle out, check both odd & even sized strings
Time: O(n^2)
Space: O(1)
*/
class Solution {
public:
int countSubstrings(string s) {
int result = 0;
for (int i = 0; i < s.size(); i++) {
middleOut(s, i, i, result);
middleOut(s, i, i + 1, result);
}
return result;
}
private:
void middleOut(string s, int i, int j, int& result) {
while (i >= 0 && j < s.size() && s[i] == s[j]) {
result++;
i--;
j++;
}
}
};