# 0647. Palindromic Substrings

https://leetcode.com/problems/palindromic-substrings

## Description

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:** 3
**Explanation:** Three palindromic strings: "a", "b", "c".
```

**Example 2:**

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

**Constraints:**

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

## ac1: central expansion

same as [https://leetcode.com/problems/longest-palindromic-substring](https://leetcode.com/problems/longest-palindromic-substring)

```java
class Solution {
    int count = 0;
    public int countSubstrings(String s) {
        // edge cases
        // if (s.length() == 0) return 0;

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

        return count;
    }

    private void expand(String s, int left, int right) {
        while (left >= 0 && right < s.length() && s.charAt(left) == s.charAt(right)) {
            count++;  // find one palindromic substring
            left--;
            right++;
        }
    }
}
```
