fork(1) download
  1. public class Main {
  2. public static String largestPalindrome(String s) {
  3. if(s == null || s.length() <= 1)
  4. return s;
  5.  
  6. int[] lp = new int[s.length()];
  7. int maxIdx = 0;
  8. for(int i = 0; i < s.length(); i++) {
  9. lp[i] = 1;
  10.  
  11. if(i == 0)
  12. continue;
  13.  
  14. if(lp[i-1] == 1 && s.charAt(i) == s.charAt(i-1))
  15. lp[i] = 2;
  16. else if(i - lp[i-1] - 1 >= 0 && s.charAt(i) == s.charAt(i - lp[i-1] - 1))
  17. lp[i] = Math.max(lp[i], lp[i-1] + 2);
  18. if(lp[i] > lp[maxIdx])
  19. maxIdx = i;
  20. }
  21. return s.substring(maxIdx - lp[maxIdx] + 1, maxIdx + 1);
  22. }
  23.  
  24. public static void main(String[] args) {
  25. System.out.println(largestPalindrome("madamimada1"));
  26. }
  27. }
Success #stdin #stdout 0.07s 380160KB
stdin
Standard input is empty
stdout
adamimada