I am working on a question in which I need to find a largest palindrome given a string. Here is the description.
public class LargestPalindrome {
public static void main(String[] args) {
System.out.println("Longest Palindrome 1: " +findLongestPalindrome("xyzracecar"));
System.out.println("Longest Palindrome 2: " +findLongestPalindrome("abcexcbaddd"));
System.out.println("Longest Palindrome 3: " +findLongestPalindrome("cacxx"));
}
public static String findLongestPalindrome(String str) {
String palindrome = ""; // initializing empty string
for(int i=0; i<str.length(); i++) {
for(int j = str.length(); j>i; j--) {
String data = str.substring(i, j);
if(isPalindrome(data)) {
if(data.length() > palindrome.length()) {
palindrome = data;
}
}
}
}
return palindrome;
}
/**
* This method is used to check whether a given string is palindrome or not
*
*/
public static boolean isPalindrome(String s) {
int last = s.length() - 1;
for(int i=0; i<s.length()/2; i++) {
if(s.charAt(i) != s.charAt(last)) {
return false;
}
last--;
}
return true;
}
}
The code is working fine. Can it be optimized anymore?