Problem Statement
Write a program to find the longest palindrome within a given string.
My Approach
I used Java’s ArrayList collection framework to solve the problem. I iteratively extracted substrings of the given string, and checked if each substring was a palindrome using a separate function. If a substring was determined to be a palindrome, I stored it in the ArrayList. I then sorted the palindromes in the ArrayList using a selection sort algorithm, and printed the longest palindrome.
Code
class Solution {
public boolean isPalindrome(String check)
{
String sum = " ";
for(int i=check.length()-1;i>=0;i--)
{
sum = sum + check.charAt(i);
}
if(sum.equalsIgnoreCase(check)==true)
{
return true;
}
else
{
return false;
}
}
public String longestPalindrome(String s) {
ArrayList<String> list = new ArrayList<String>();
String sum = " ";
for(int i=0;i<s.length()-1;i++)
{
for(int j=i+1;j<s.length();j++)
{
sum = s.substring(i,j+1);
if(isPalindrome(sum)==true)
{
list.add(sum);
sum= " ";
}
else
{
sum=" ";
continue;
}
}
}
for(int i = 0;i<list.size()-1;i++)
{
int minIndex=i;
for(int j=i+1;j<list.size();j++)
{
if(list.get(j).length()<list.get(minIndex).length())
{
minIndex=j;
}
}
String temp = list.get(i);
list.add(i, list.get(minIndex));
list.add(minIndex, temp);
}
if(list.size()!=0)
{
String get = list.get(list.size()-1);
return get;
}
else
{
return null;
}
}
}