package com.anuragkapur.leetcode;
/**
* @author anuragkapur
*/
public class LongestPalindromeSubstring {
/**
* Run time complexity: O(n^2) (worst case)
*
* @param s
* @return
*/
public String longestPalindrome(String s) {
if (s == null || s.length() == 1) {
return s;
}
final char chars[] = s.toCharArray();
int longestLength = 0;
int longestStart = 0;
for (int i = 0; i < s.length(); i++) {
for (int j = s.length() - 1; j > i && (j - i + 1) > longestLength; j--) {
if (isPalindrome(chars, i, j)) {
longestStart = i;
longestLength = j - i + 1;
break;
}
}
}
return new String(chars, longestStart, longestLength);
}
private boolean isPalindrome(final char chars[], int start, int end) {
if (start > end) {
throw new IllegalArgumentException("Invalid char array indices provided :: " + start + " , "+ end);
}
while (start < end) {
if (chars[start] != chars[end]) {
return false;
}
start ++;
end --;
}
return true;
}
}