import java.lang.*; import java.util.*; class LongestPalindrome { public static String longestPalindrome(String s) { // TODO: check if s length is 0 or 1 // TODO: find simpler solution s = s.toLowerCase(); char[] arr = s.toCharArray(); String ans = null; int i = 0; int j = 0; int max = 0; // Odd case: "aba" for (int a = 1; a < arr.length - 1; a++) { i = a - 1; j = a + 1; while (i >= 0 && j < arr.length) { if (arr[i] == arr[j]) { if (j - i > max) { max = j - i; ans = s.substring(i, j + 1); } i--; j++; } else { break; } } } // Even case: "abba" for (i = 0, j = i + 1; i < arr.length - 1; i++) { while (i >= 0 && j < arr.length) { if (arr[i] == arr[j]) { if (j - i > max) { max = j - i; ans = s.substring(i, j + 1); } i--; j++; } else { break; } } } return ans; } public static void main(String[] args) { String s = "kl;fadsjf;dalscbbciuporeqwrpo"; System.out.println(longestPalindrome(s)); } }