Longest Palindromic Substring Python
- Get link
- X
- Other Apps
PROGRAM TO FIND THE LONGEST PALINDROMIC SUBSTRING
import
sys
# A utility function to print a
# substring str[low..high]
def
printSubStr(st, low, high) :
sys.stdout.write(st[low : high
+
1
])
sys.stdout.flush()
return
''
# This function prints the longest palindrome
# substring of st[]. It also returns the length
# of the longest palindrome
def
longestPalSubstr(st) :
n
=
len
(st)
# get length of input string
# table[i][j] will be false if substring
# str[i..j] is not palindrome. Else
# table[i][j] will be true
table
=
[[
0
for
x
in
range
(n)]
for
y
in
range
(n)]
# All substrings of length 1 are
# palindromes
maxLength
=
1
i
=
0
while
(i < n) :
table[i][i]
=
True
i
=
i
+
1
# check for sub-string of length 2.
start
=
0
i
=
0
while
i < n
-
1
:
if
(st[i]
=
=
st[i
+
1
]) :
table[i][i
+
1
]
=
True
start
=
i
maxLength
=
2
i
=
i
+
1
# Check for lengths greater than 2.
# k is length of substring
k
=
3
while
k <
=
n :
# Fix the starting index
i
=
0
while
i < (n
-
k
+
1
) :
# Get the ending index of
# substring from starting
# index i and length k
j
=
i
+
k
-
1
# checking for sub-string from
# ith index to jth index iff
# st[i + 1] to st[(j-1)] is a
# palindrome
if
(table[i
+
1
][j
-
1
]
and
st[i]
=
=
st[j]) :
table[i][j]
=
True
if
(k > maxLength) :
start
=
i
maxLength
=
k
i
=
i
+
1
k
=
k
+
1
print
"Longest palindrome substring is: "
, printSubStr(st, start,
start
+
maxLength
-
1
)
return
maxLength
# return length of LPS
# Driver program to test above functions
st
=
"forgeeksskeegfor"
l
=
longestPalSubstr(st)
print
"Length is:"
, l
OUTPUT
Longest palindrome substring is: geeksskeeg Length is: 10
- Get link
- X
- Other Apps
Comments
Post a Comment