Hướng dẫn how do you find all palindromes in a string in python? - làm thế nào để bạn tìm thấy tất cả các palindromes trong một chuỗi trong python?

Thử thách mã hóa

Thử thách: Cho một chuỗi. Làm thế nào để tìm tất cả palindromes trong chuỗi?Challenge: Given a string. How to find all palindromes in the string?

Để hiểu được, cho phép tôi nhanh chóng thêm một định nghĩa về thuật ngữ palindrom:

Định nghĩa: Một palindrom là một chuỗi các ký tự đọc cùng lùi như về phía trước như 'madam', 'anna' hoặc '101'.Definition: A palindrome is a sequence of characters that reads the same backward as forward such as 'madam', 'anna', or '101'.

Bài viết này muốn cung cấp cho bạn một giải pháp nhanh chóng và dễ dàng trong Python. Đầu tiên, chúng tôi sẽ giải quyết vấn đề dễ dàng nhưng quan trọng hơn là kiểm tra xem một chất nền có phải là một palindrom ở nơi đầu tiên không:

Cách kiểm tra xem chuỗi có phải là palindrom không

Bạn có thể dễ dàng kiểm tra xem một chuỗi là một palindrom bằng cách sử dụng biểu thức cắt word == word[::-1] đánh giá thành True nếu từ này giống nhau về phía trước và ngược, tức là, nó là một palindrom.

Hướng dẫn được đề xuất: Python Palindromes One-LinerRecommended Tutorial: Python Palindromes One-Liner

Tiếp theo, chúng tôi sẽ khám phá cách tìm tất cả các chuỗi con trong chuỗi Python cũng là palindromes. Bạn có thể tìm thấy trình kiểm tra palindrom của chúng tôi trong giải pháp mã (được tô sáng):

Tìm tất cả các nền tảng là palindrom

Cách tiếp cận vũ phu để tìm kiếm tất cả các palindromes trong một chuỗi là lặp lại tất cả các chuỗi con trong một vòng lặp ____10 được lồng nhau. Sau đó kiểm tra từng chuỗi con nếu nó là một palindrom sử dụng word == word[::-1]. Theo dõi các palindromes được tìm thấy bằng phương pháp

def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
2. Trả lại danh sách cuối cùng sau khi đi qua tất cả các chuỗi con.

Ở đây, giải pháp đầy đủ:

def find_palindromes(s):
    palindromes = []
    n = len(s)
    for i in range(n):
        for j in range(i+1,n+1):
            word = s[i:j]
            if word == word[::-1]:
                palindromes.append(word)          
    return palindromes


print(find_palindromes('locoannamadam'))
# ['l', 'o', 'oco', 'c', 'o', 'a', 'anna',
#  'n', 'nn', 'n', 'a', 'ama', 'm', 'madam',
#  'a', 'ada', 'd', 'a', 'm']

print(find_palindromes('anna'))
# ['a', 'anna', 'n', 'nn', 'n', 'a']

print(find_palindromes('abc'))
# ['a', 'b', 'c']

Độ phức tạp thời gian chạy

Điều này có độ phức tạp thời gian chạy khối, tức là, đối với một chuỗi có độ dài

def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
3, chúng ta cần kiểm tra
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
4 các từ khác nhau. Mỗi từ có thể có tối đa
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
3 ký tự, do đó, chính kiểm tra palindrom là
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
6. Cùng nhau, điều này mang lại độ phức tạp thời gian chạy của
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
7.

Giải pháp thời gian chạy bậc hai

đây là điều tốt nhất mà chúng ta có thể làm sao? Không! Có một giải pháp thời gian O (N²)!

Ở đây, một giải pháp raptime bậc hai để tìm tất cả các palindromes trong một chuỗi nhất định bỏ qua các palindromes một ký tự tầm thường (được sửa đổi đáng kể từ nguồn):

def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []

Vui lòng tham gia cộng đồng những người học đầy tham vọng của chúng tôi như bạn (chúng tôi cũng có những tấm che

Hướng dẫn how do you find all palindromes in a string in python? - làm thế nào để bạn tìm thấy tất cả các palindromes trong một chuỗi trong python?

Trong khi làm việc như một nhà nghiên cứu trong các hệ thống phân tán, Tiến sĩ Christian Mayer đã tìm thấy tình yêu của mình đối với việc dạy các sinh viên khoa học máy tính.

Để giúp học sinh đạt được thành công cao hơn của Python, ông đã thành lập trang web giáo dục chương trình Finxter.com. Ông là tác giả của cuốn sách lập trình phổ biến Python Oneer (Nostarch 2020), đồng tác giả của loạt sách Break Break Python, những cuốn sách tự xuất bản, người đam mê khoa học máy tính, freelancer và chủ sở hữu của một trong 10 blog Python lớn nhất trên toàn thế giới.

Niềm đam mê của ông là viết, đọc và mã hóa. Nhưng niềm đam mê lớn nhất của anh là phục vụ các lập trình viên đầy tham vọng thông qua Finxter và giúp họ tăng cường các kỹ năng của họ. Bạn có thể tham gia học viện email miễn phí của anh ấy ở đây.

Đưa ra một chuỗi các ký tự ASCII viết thường, tìm tất cả các chuỗi phụ liên tục khác biệt của nó. & NBSP;

Examples: 

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k

Phương pháp 1:

Bước 1: Tìm tất cả các palindromes bằng thuật toán của Manacher đã sửa đổi: & nbsp; coi mỗi ký tự như một trục, mở rộng ở cả hai bên để tìm độ dài của cả hai palindromes chẵn và lẻ tập trung vào ký tự trục tập dưới mức xem xét và lưu trữ độ dài trong 2 mảng (ODD & chẵn). 
Considering each character as a pivot, expand on both sides to find the length of both even and odd length palindromes centered at the pivot character under consideration and store the length in the 2 arrays (odd & even). 
Time complexity for this step is O(n^2)

Bước 2: Chèn tất cả các palindromes được tìm thấy trong một hashmap: & nbsp; chèn tất cả các palindromes được tìm thấy từ bước trước đó vào một hashmap. Cũng chèn tất cả các ký tự riêng lẻ từ chuỗi vào hashmap (để tạo ra các chuỗi phụ đơn lẻ khác nhau . Lưu ý rằng có thể có nhiều nhất là các chuỗi phụ O (N^2) của một chuỗi. Trong mã C ++ dưới đây được đặt hàng HashMap được sử dụng trong đó độ phức tạp của thời gian chèn và tìm kiếm là o (logn). Trong C ++, HashMap được đặt hàng được triển khai bằng cây đen màu đỏ. 
Insert all the palindromes found from the previous step into a HashMap. Also insert all the individual characters from the string into the HashMap (to generate distinct single letter palindromic sub-strings). 
Time complexity of this step is O(n^3) assuming that the hash insert search takes O(1) time. Note that there can be at most O(n^2) palindrome sub-strings of a string. In below C++ code ordered hashmap is used where the time complexity of insert and search is O(Logn). In C++, ordered hashmap is implemented using Red Black Tree.

Bước 3: In các palindromes riêng biệt và số lượng các palindromes riêng biệt như vậy: & nbsp; bước cuối cùng là in tất cả các giá trị được lưu trữ trong hashmap (chỉ các phần tử riêng biệt sẽ được băm do tính chất của hashmap). Kích thước của bản đồ cho số lượng các chuỗi phụ liên tục palindromic riêng biệt. 
The last step is to print all values stored in the HashMap (only distinct elements will be hashed due to the property of HashMap). The size of the map gives the number of distinct palindromic continuous sub-strings.

Dưới đây là việc thực hiện ý tưởng trên.

C++

def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
8

def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
9

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
0
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
1
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
2

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
3
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
4

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
5

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
7
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
9

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
2

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
5

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
7
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
8
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
9
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
0
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
1

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
0
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
4
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
6

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
5

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8 'madam'1

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9'madam'3

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8 'madam'6

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9'madam'8 'madam'9

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
5

'anna'2'madam'8 'anna'4

'anna'5'anna'6

'anna'2'anna'8

'anna'2

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8 '101'1

'anna'2'madam'8 '101'4

'anna'2

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
5

'anna'5'101'8

'anna'5word == word[::-1]0

'anna'2word == word[::-1]2

'anna'2word == word[::-1]4

'anna'2word == word[::-1]6

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9word == word[::-1]2

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6word == word[::-1]2

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6True2

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6True4

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
0
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
4
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8 True9

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
5

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9____10
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
4
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
6

'anna'2

def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
0
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
4
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
11

def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
12
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
13

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
15

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6word == word[::-1]2

def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
18
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
19
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
20
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
21

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
23
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
24
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
1

def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
18
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
7
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
29

def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
18
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
0
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
32

def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
33
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
34

word == word[::-1]2

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
37

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
5

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
40
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
41
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
42

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
44
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
45

word == word[::-1]2

Java

def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
47
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
48

def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
47
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
50

def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
51
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
52
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
53

def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
54

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
56
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
3
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
58

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
5

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
62
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
63
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
64

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
67

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
70
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
63
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
73__

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
7
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
8
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
9
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
0
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
1

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
0
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
4
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
88
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
89
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
90
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
76
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
92

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
5

'anna'2

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
97
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
89
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
99

'anna'2

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
01
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
89
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
03
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
89
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
1

'anna'2

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
08
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
76
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
1

'anna'2'madam'8 'madam'9

'anna'2

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
5

'anna'5'madam'8

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
18
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
76
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
20

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
21
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
22

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
23'anna'6

'anna'5'anna'8

'anna'5

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
29
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
76
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
1

'anna'5'madam'8 '101'4

'anna'5

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
5

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
23
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
38

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
39
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
40

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
23word == word[::-1]0

'anna'5word == word[::-1]2

'anna'5

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
46
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
89
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
42

'anna'5word == word[::-1]6

'anna'2word == word[::-1]2

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9word == word[::-1]2

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
56
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
76
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
58
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
76
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
42

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
62
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
89
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
64
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
76
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
66
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
76
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
42

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
0
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
4
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
08
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
76
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
75

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
5

'anna'2

def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
0
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
4
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
88
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
89
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
90
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
76
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
92

'anna'5

def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
0
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
4
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
91
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
89
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
93

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
94
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
95
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
76
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
97
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
76

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
99
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
00
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
74
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
02
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
76
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
42

'anna'2

 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
06
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
76
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
66
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
76
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
42

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9word == word[::-1]2

 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
13
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
14
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
20
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
16

 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
17
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
00
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
24
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
42

 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
13
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
0
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
23

 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
24
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
25

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6word == word[::-1]2

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
51
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
56
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
3
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
32

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
5

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
40
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
41
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
42

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6word == word[::-1]2

word == word[::-1]2

Python3

 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
42
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
43

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
45
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
46
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
47
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
48

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
50
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
46
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
52
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
53

Các

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
75
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
46
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
8
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
64
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
75
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
64
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
0

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
0
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
84
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
61
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
62
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
4
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
74
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
89

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
91
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
46 ________ 189 & nbsp; & nbsp; & nbsp;

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9______201

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
01
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
46
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
76

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9'madam'8
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
06
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
46
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
08

'anna'2'madam'8

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
11
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
12
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
91__

'anna'5

 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
91
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
64
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
46
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
76

'anna'2

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
30
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
46
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
32

'anna'2

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
34
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
46
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
76

'anna'2'madam'8

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
39
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
12
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
41__

Các

'anna'5

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
34
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
64
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
46
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
76

'anna'2

 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
91
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
46
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
67
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
68
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
12
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
70
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
89
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
72

'anna'2

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
01
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
64
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
46
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
77

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
75
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
46
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
81
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
76
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
83
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
522____353
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
12
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
76
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
88

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
90
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
89
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
92
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
46
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
76

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
0
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
01
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
61
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
62
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
4
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
76'madam'02

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
0
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
84
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
61
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
62
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
4
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
74
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
89

Is

'anna'5'madam'23

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
12
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
91
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
12

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9'madam'42
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
46
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
76

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6'madam'46
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
4___

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
0
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
01
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
61 'madam'61

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9'madam'46 'madam'64

def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
40
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
41
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
72

C#

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
0 'madam'69

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
0 'madam'71

def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
52
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
53

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
5

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
51
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
56
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
3
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
40'madam'80 'madam'81

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
5

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9'madam'85'madam'80
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
64

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8 'madam'90
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
63 'madam'85'madam'80
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
64

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8 'madam'97

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8 'anna'00

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8'anna'03
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
63
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8'anna'06

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
7
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
8
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
9
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
0
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
1

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9____10
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
4
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
6

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
5

'anna'2

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8 'anna'22

'anna'2'anna'24

'anna'2

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8 'madam'6

'anna'2'madam'8 'madam'9

'anna'2

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
5

'anna'5'madam'8 'anna'4

'anna'5'anna'37

'anna'5'anna'39

'anna'5

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8 '101'1

'anna'5'madam'8 'anna'45

'anna'5

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
5

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
23'anna'49

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
23word == word[::-1]0

'anna'5word == word[::-1]2

'anna'5'anna'55

'anna'5word == word[::-1]6

'anna'2word == word[::-1]2

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9word == word[::-1]2

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9'anna'63

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9'anna'65 'anna'66

'anna'2'anna'68

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9'anna'70

'anna'2'anna'72

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9____10
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
4
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8 'anna'77

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
5

'anna'2

def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
0
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
4
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
6

'anna'2

def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
0
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
4
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8 'anna'89

'anna'2

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
5

'anna'5'anna'65 'anna'94

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
23'anna'96

'anna'5'anna'70

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
23'101'00

'anna'2word == word[::-1]2

'anna'2'anna'65 '101'05

'anna'5'101'07

'anna'2'anna'70

'anna'5'101'11

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9word == word[::-1]2

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9'101'15
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
20 '101'17

Các

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9'101'28

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6word == word[::-1]2

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
51
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
56
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
3 '101'35'madam'80'101'37

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
5

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
40
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
41
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
42

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6word == word[::-1]2

word == word[::-1]2

JavaScript

'101'47

'101'48 '101'49

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
5

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6'101'52
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
63 '101'54

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6'101'56

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6'101'58
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
63 '101'60

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
0'101'63

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9'101'65
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
63 '101'67

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
7
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
8
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
9
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
0
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
1

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
0 '101'76

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
5

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9'101'80

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9'madam'3

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9'101'84

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9'madam'8 'madam'9

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
5

'anna'2'madam'8 'anna'4

'anna'5'anna'6

'anna'2'anna'8

'anna'2'101'98

'anna'2'madam'8 '101'4

'anna'2

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
5

'anna'5word == word[::-1]05

'anna'5word == word[::-1]0

'anna'2word == word[::-1]2

'anna'2word == word[::-1]11

'anna'2word == word[::-1]6

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9word == word[::-1]2

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6word == word[::-1]2

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6word == word[::-1]19

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6word == word[::-1]21

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
0 word == word[::-1]24

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
5

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9____10 word == word[::-1]29

'anna'2

def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
0 word == word[::-1]32

def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
12word == word[::-1]34

'anna'2word == word[::-1]2

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9word == word[::-1]2

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9word == word[::-1]40

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6word == word[::-1]2

def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
18word == word[::-1]44word == word[::-1]45
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
42

def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
18
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
0word == word[::-1]49

def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
33word == word[::-1]51word == word[::-1]45____
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
42

word == word[::-1]2

def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
40
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
41
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
42

word == word[::-1]58

Output:  

 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 

Phương pháp 2:

Chiều dài chuỗi - n

Bước 1: Tìm tất cả các chuỗi phụ palindromic

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Đầu tiên cho mọi kiểm tra chuỗi con nếu nó là palindrom hoặc không sử dụng lập trình động như thế này-https://www.geeksforgeek.org/count-motindrom-sub-string-string/First for every sub-string check if it is palindrome or not using dynamic programming like this – https://www.geeksforgeeks.org/count-palindrome-sub-strings-string/

& nbsp; & nbsp; & nbsp; & nbsp; Độ phức tạp về thời gian - O (N2) & NBSP; và & nbsp; Độ phức tạp không gian - O (N2)

Bước 2: Loại bỏ các palindromes trùng lặp

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Đối với mọi chỉ mục bắt đầu từ INDEX 0, chúng tôi sẽ sử dụng thuật toán KMP và kiểm tra xem tiền tố và hậu tố có giống nhau không và là palindrom thì chúng tôi sẽ đặt 0 mảng dp cho chuỗi phụ hậu tố đóFor every index starting from index 0 we will use KMP algorithm and check if prefix and suffix is same and is palindrome then we will put 0 the dp array for that suffix sub-string

& nbsp; & nbsp; & nbsp; & nbsp; Độ phức tạp thời gian O (N2) & NBSP; & nbsp; và & nbsp; Độ phức tạp không gian O (N) cho mảng KMP

Bước 3: In các palindromes riêng biệt và số lượng palindromes như vậy

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; cho mỗi kiểm tra chuỗi con nếu nó có trong mảng dp (tức là dp [i] [j] == true) và in nó.For every sub-string check if it is present in dp array (i.e dp[i][j] == true) and print it.

& nbsp; & nbsp; & nbsp; & nbsp; Độ phức tạp thời gian O (N2) & NBSP; và & nbsp; & nbsp; độ phức tạp không gian o (n)

Độ phức tạp về thời gian tổng thể - O (N2)

Độ phức tạp không gian tổng thể - O (N2)

Dưới đây là việc thực hiện ý tưởng trên.

C++

def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
8

word == word[::-1]60

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
0
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
1
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
2

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8 word == word[::-1]65

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
5

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
2

Các

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
0
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
4
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8 word == word[::-1]82

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9word == word[::-1]84

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9'anna'65 word == word[::-1]87

'anna'2word == word[::-1]89

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9word == word[::-1]2

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6word == word[::-1]2

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
0
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
4
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8 word == word[::-1]98

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9____10
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
4
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8 True03

'anna'2'anna'65 True06

'anna'5True08

'anna'5True10True11

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
1

'anna'2word == word[::-1]2

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9word == word[::-1]2

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6word == word[::-1]2

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6True20
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8True22

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
0
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
4
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8 word == word[::-1]82

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8 True30

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9'madam'8 True33

'anna'2'anna'65 True36

'anna'5True38word == word[::-1]76

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
1

'anna'5True42

'anna'2word == word[::-1]2

'anna'2'anna'70 'anna'65 True48

'anna'5True50

'anna'2word == word[::-1]2

'anna'2'anna'70

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
5

'anna'5True57

'anna'2word == word[::-1]2

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9word == word[::-1]2

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6word == word[::-1]2

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8 True66

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
0
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
4
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8 word == word[::-1]82

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9True73

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9____10
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
4
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8 True78

'anna'2True80

'anna'2'anna'65 True83

'anna'5True85

'anna'5True87True88

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
1

'anna'2word == word[::-1]2

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9word == word[::-1]2

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6word == word[::-1]2

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
19True98

True99

def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
000True88
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
1

def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
33
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
44
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
45

word == word[::-1]2

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
37

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
5

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
011
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
41
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
013
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
014
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
1

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
017

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
019

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
44
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
45

word == word[::-1]2

Java

def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
47
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
025

def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
52
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
53

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
5

def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
029
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
51
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
56
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
3
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
033

def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
029
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
5

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
037
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
41
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
013
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
014
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
1

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
017

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
019

def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
029word == word[::-1]2

def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
029
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
51
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
56
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
052

def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
029
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
5

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
67

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
059
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
060
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
63
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
059
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
063

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
0
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
4
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
08
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
89
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
75

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
5

def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
33
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
074True11
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
1

def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
33'anna'65
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
079
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
76

 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
24
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
082
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
76
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
084

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
086
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
76
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
03True11
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
1

def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
33word == word[::-1]2

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6word == word[::-1]2

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
0
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
4
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
099
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
100
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
101

def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
33
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
0
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
4
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9'anna'65
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
113
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
76
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
115

'anna'2

def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
117
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
76
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
119
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
76
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
121
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
76
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
123

 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
24
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
125
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
76
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
127True11
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
1

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9word == word[::-1]2

def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
33word == word[::-1]2

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6word == word[::-1]2

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
138
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
63
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
141

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
0
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
4
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
08
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
89
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
75

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
5

def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
33'anna'65
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
079
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
76

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
0
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
4
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
099
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
100
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
101

def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
33
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
0
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
4
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
5

 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
24True38word == word[::-1]76
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
1

 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
24True42

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9word == word[::-1]2

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9'anna'65
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
113
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
76
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
115

 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
24
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
181
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
76
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
77

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9word == word[::-1]2

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
138
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
63
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
141

 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
24
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
190
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
89
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
1

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9word == word[::-1]2

def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
33word == word[::-1]2

def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
33
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
88
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
89
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
155
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
76
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
1

def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
33'madam'8 True33

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9'anna'65
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
163

def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
33
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
212
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
213
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
1

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9'anna'70 'anna'65
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
177
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
89
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
179

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
221

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9'anna'70
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
5

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
5

 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
24True85

 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
24
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
230

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
9word == word[::-1]2

def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
33word == word[::-1]2

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6word == word[::-1]2

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6
 Below are 5 palindrome sub-strings
a
aa
aaa
aba
b 
14

def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
33True98

def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
33
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
242

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6word == word[::-1]2

def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
029word == word[::-1]2

word == word[::-1]2

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
201
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
89
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
1

a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10

Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
6
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
0
a
aba
b
aa
aaa
Total number of distinct palindromes is 5
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
Total number of distinct palindromes is 10
4
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
8
Input: str = "abaaa"
Output:  Below are 5 palindrome sub-strings
a
aa
aaa
aba
b


Input: str = "geek"
Output:  Below are 4 palindrome sub-strings
e
ee
g
k
08
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
89
def find_palindromes(s, j, k):
    ''' Finds palindromes in substring between indices j and k'''
    palindromes = []
    while j >= 0 and k < len(s):
        if s[j] != s[k]:
            break
        palindromes.append(s[j: k + 1])
        j -= 1
        k += 1
    return palindromes


def find_all(s):
    '''Finds all palindromes (non-trivial) in string s'''
    palindromes = []
    for i in range(0, len(s)):
        palindromes.extend(find_palindromes(s, i-1, i+1))
        palindromes.extend(find_palindromes(s, i, i+1))
    return palindromes


print(find_all('locoannamadam'))
# ['oco', 'nn', 'anna', 'ama', 'ada', 'madam']

print(find_all('anna'))
# ['nn', 'anna']

print(find_all('abc'))
# []
210
 
Count All Palindrome Sub-Strings in a String
This article is contributed by Vignesh Narayanan and Sowmya Sampath. Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.