String buildPalindrome(String st) {
int l = st.length();
for (int i = l / 2; i < l; i++) {
if (ismiddle(i, st))
return st + (2 * i - l > 0 ? new StringBuilder(st.substring(0, 2 * i - l)).reverse().toString() : "");
if (ispivot(i, st))
return st + new StringBuilder(st.substring(0, 2 * i - l + 1)).reverse().toString();
}
return null;
}
boolean ispivot(int pos, String s) {
int i = 1;
while (pos + i < s.length()) {
if (s.charAt(pos + i) != s.charAt(pos - i)) return false;
i++;
}
return true;
}
boolean ismiddle(int pos, String s) {
int i = 0;
while (pos + i < s.length()) {
if (s.charAt(pos + i) != s.charAt(pos - i - 1)) return false;
i++;
}
return true;
}