# Palindromes And Indexes

Last Updated: 7 Jul, 2021
Difficulty: Moderate

## PROBLEM STATEMENT

#### Note: A substring is a contiguous non-empty segment of the string.

##### For example:
``````String S = ababa
Index i = 1
len = 3

The answer to the above test case is 2 since there are two substrings that start at index 1 (1 - based indexing) - “aba”, “ababa”. Both these have a length of at least 3.
``````
##### Input Format:
``````The first line contains a single integer ‘T’ denoting the number of test cases to be run. Then the test cases follow.

The first line of each test case contains the string S.

The next line contains 2 space-separated integers denoting index ‘i’ and length ‘len’.
``````
##### Output Format:
``````For each test case, print an integer denoting the number of possible strings.

Output for each test case will be printed in a separate line.
``````
##### Note:
``````You are not required to print anything; it has already been taken care of. Just implement the function.
``````
##### Constraints:
``````1 <= T <= 10
1 <= |S| <= 10^4
1 <= i, len <= N

Time Limit: 1 sec.
``````

## Approach 1

We can check for all possible substrings starting at index ‘i’ and if they have lengths greater than ‘LEN’ and are palindrome we can increment the answer.

Algorithm:

palindromesAtIndex(‘S’, i, ‘LEN’) takes string, index, and length as input and returns the number of palindromic substrings starting at index ‘i’ with length at least ‘LEN’.

• Initialize a variable ‘ANS’ of type int to store the count of possible substrings.
• Start at index ‘i’ and keep the other pointer at index ‘i’ + ‘LEN’ - ‘1’.
• Check if the substring [i, j] is a palindrome or not. If yes, increment the ‘ANS’.
• Increment the other end of the substring.
• Return ‘ANS’.