Problem of the day
You have been given a string STR. Your task is to find the total number of palindromic substrings of STR.
Example :If the input string is "abbc", then all the possible palindromic substrings would be: ["a", "b", "b", c", "bb"] and hence, the output will be 5 since we have 5 substrings in total which form a palindrome.
Note :
A string is said to be a 'Palindrome' if it is read the same forwards and backwards.
For example, “abba” is a palindrome, but “abbc” is not.
A 'Substring' is a contiguous sequence of characters within a string.
For example, "a", "b", "c", "ab", "bc", "abc" are substrings of "abc".
The first line contains an integer 't' which denotes the number of test cases or queries to be run. Then the test cases follow.
The first and only line of each test case contains the string STR for which you have to count the number of palindromic substrings.
Output Format :
For each test case, return the total number of palindromic substrings possible.
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.
1 <= t <= 100
0 <= N <= 1000
Where 't' is the number of test cases, 'N' is the length of the given string.
Time Limit: 1 sec.
1
abc
3
All the substrings of the given string are "a", "b", "c", "ab", "bc", "abc".
The plaindromics substrings are "a", "b", "c". So the output will be 3.
1
aaa
6
Think you have access to all the substrings of the given string in a storage. From the pool of all the possible substrings, which all are palindromes?
O(N^3), where N is the length of the string.
1. Iterating over the start and endpoints, all the substrings will take O(N^2) time.
2. Iterating over one substring will take O(N) time.
Hence, the total time taken would be O(N * N^2) => O(N^3).
O(1).
Constant space is used.