Longest Palindromic Substring Java
- Get link
- X
- Other Apps
PROGRAM TO FIND THE LONGEST PALINDROMIC SUBSTRING
public
class
LongestPalinSubstring {
// A utility function to print
// a substring str[low..high]
static
void
printSubStr(
String str,
int
low,
int
high)
{
System.out.println(
str.substring(
low, high +
1
));
}
// This function prints the longest
// palindrome substring of str[].
// It also returns the length of the
// longest palindrome
static
int
longestPalSubstr(String str)
{
// get length of input string
int
n = str.length();
// table[i][j] will be false if
// substring str[i..j] is not palindrome.
// Else table[i][j] will be true
boolean
table[][] =
new
boolean
[n][n];
// All substrings of length 1 are palindromes
int
maxLength =
1
;
for
(
int
i =
0
; i < n; ++i)
table[i][i] =
true
;
// check for sub-string of length 2.
int
start =
0
;
for
(
int
i =
0
; i < n -
1
; ++i) {
if
(str.charAt(i) == str.charAt(i +
1
)) {
table[i][i +
1
] =
true
;
start = i;
maxLength =
2
;
}
}
// Check for lengths greater than 2.
// k is length of substring
for
(
int
k =
3
; k <= n; ++k) {
// Fix the starting index
for
(
int
i =
0
; i < n - k +
1
; ++i) {
// Get the ending index of substring from
// starting index i and length k
int
j = i + k -
1
;
// checking for sub-string from ith index to
// jth index iff str.charAt(i+1) to
// str.charAt(j-1) is a palindrome
if
(table[i +
1
][j -
1
]
&& str.charAt(i) == str.charAt(j)) {
table[i][j] =
true
;
if
(k > maxLength) {
start = i;
maxLength = k;
}
}
}
}
System.out.print(
"Longest palindrome substring is; "
);
printSubStr(str, start,
start + maxLength -
1
);
// return length of LPS
return
maxLength;
}
// Driver program to test above functions
public
static
void
main(String[] args)
{
String str =
"forgeeksskeegfor"
;
System.out.println(
"Length is: "
+ longestPalSubstr(str));
}
}
OUTPUT
Longest palindrome substring is: geeksskeeg Length is: 10
- Get link
- X
- Other Apps
Comments
Post a Comment