fork download
  1. import java.util.*;
  2. import java.lang.*;
  3. import java.io.*;
  4.  
  5. class Ideone
  6. {
  7. public static void main (String[] args) throws java.lang.Exception
  8. {
  9. System.out.println(shortestPalindrome("aacecaaa"));
  10. System.out.println(shortestPalindrome("aaacecaa"));
  11. System.out.println(shortestPalindrome("abcd"));
  12. System.out.println(shortestPalindrome("madamImadam"));
  13. System.out.println(shortestPalindrome("madaMimadam"));
  14. }
  15.  
  16. private static Boolean IsPalindrome(String s) {
  17. int midpoint = s.length()/2;
  18. // If the string length is odd, we do not need to check the central character
  19. // as it is common to both
  20. return (new StringBuilder(s.substring(0, midpoint)).reverse().toString()
  21. .equals(s.substring(s.length() - midpoint)));
  22. }
  23.  
  24. private static String shortestPalindrome(String s) {
  25. int j = s.length();
  26. while (!IsPalindrome(s.substring(0, j))) {
  27. j--;
  28. }
  29. String suffix = s.substring(j);
  30. return new StringBuilder(suffix).reverse()
  31. .append(s.substring(0, j))
  32. .append(suffix)
  33. .toString();
  34. }
  35. }
Success #stdin #stdout 0.09s 320512KB
stdin
Standard input is empty
stdout
aaacecaaa
aacecaaacecaa
dcbabcd
madamImadam
madamiMadamadaMimadam