-
Notifications
You must be signed in to change notification settings - Fork 824
/
Copy pathLongestPalindromeSubstring.java
49 lines (43 loc) · 1.18 KB
/
LongestPalindromeSubstring.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package misc;
public class LongestPalindromeSubstring {
static void printSubString(String str, int low, int high) {
System.out.println(str.substring(low, high + 1));
}
static int longestPalSubStr(String str) {
int maxLength = 1;
int start = 0;
int len = str.length();
int low, high;
for(int i = 1; i < len; i++) {
low = i - 1;
high = i;
while(low >= 0 && high < len && str.charAt(low) == str.charAt(high)) {
if(high - low + 1 > maxLength) {
start = low;
maxLength = high - low + 1;
}
--low;
++high;
}
// Find the longest odd length Palindrome with center point as i
low = i - 1;
high = i + 1;
while(low >= 0 && high < len && str.charAt(low) == str.charAt(high)) {
if(high - low + 1 > maxLength) {
start = low;
maxLength = high - low + 1;
}
--low;
++high;
}
}
System.out.print("Longest Palindrome Substring is: ");
printSubString(str, start, start + maxLength - 1);
return maxLength;
}
public static void main(String args[]) {
String str = "Hello World";
System.out.println("String: " + str);
System.out.println("Length is: "+longestPalSubStr(str));
}
}