Skip to main content

Palindromic Substrings

Problem statement

Given a string s, return the number of palindromic substrings in it.

A string is a palindrome when it reads the same backward as forward.

A substring is a contiguous sequence of characters within the string.

Example 1:

Input: s = "abc"Output: 3Explanation: Three palindromic strings: "a", "b", "c".

Example 2:

Input: s = "aaa"Output: 6Explanation: Six palindromic strings: "a", "a", "a", "aa", "aa", "aaa".

Constraints:

  • 1 <= s.length <= 1000
  • s consists of lowercase English letters.

My solution

/**
* @param {string} s
* @return {number}
*/
var countSubstrings = function(s) {
let count = 0;

function expand(str, left, right) {
if (!str || left > right) {
return 0;
}

while (left >= 0 && right < str.length && (str.charAt(left) === str.charAt(right))) {
count++;
left--
right++;
}
}

for (let i = 0; i < s.length; i++) {
expand(s, i, i)
expand(s, i, i + 1)
}

return count;
};